Latar belakang

Saat saya mencoba melamar pekerjaan sebagai ilmuwan data, saya baru-baru ini bergabung dengan “program gelar nano “Menjadi Ilmuwan Data” Udacity”.

Untuk proyek pertama, saya harus menganalisis kumpulan data dan membagikan analisis saya di Medium.

Mulai

Saya memutuskan untuk menggunakan kesempatan ini untuk membagikan apa yang telah saya pelajari dari buku yang luar biasa ini. (Sangat dianjurkan!)



Bagaimana perusahaan kartu kredit mendeteksi transaksi penipuan?

Ikhtisar Data



“Dataset sebenarnya berisi transaksi kartu kredit pemegang kartu Eropa pada September 2013. Dataset ini memiliki 492 penipuan dari 284,807 transaksi. Dataset sangat tidak seimbang, kelas positif (penipuan) mencapai 0,172% dari seluruh transaksi.

  • 'Waktu' berisi detik yang berlalu antara setiap transaksi
  • Fitur V1, V2,… V28 adalah komponen utama yang diperoleh dengan PCA
  • 'Jumlah' adalah jumlah transaksi, fitur ini dapat digunakan untuk pembelajaran sensitif biaya yang bergantung pada contoh
  • 'Kelas' adalah variabel respons dan bernilai 1 jika terjadi penipuan dan 0 jika terjadi penipuan.
data.head()

data.shape

Hasilkan statistik ringkasan

# describes the data, column by column.
data.describe()

data.columns

# The total number of positive labels, or fraudulent transactions
data[‘Class’].sum()

Identifikasi nilai nonnumerik berdasarkan fitur

nanCounter = np.isnan(data).sum()

Identifikasi nilai-nilai yang berbeda berdasarkan fitur

Kami memiliki 124.592 stempel waktu yang berbeda. Namun total observasinya ada 284.807 observasi. Artinya ada banyak transaksi pada stempel waktu tertentu.

Hasilkan Matriks Fitur dan Array Label

# Create the feature matrix X and the labels array Y
dataX = data.copy().drop([‘Class’],axis=1)

dataY = data[‘Class’].copy()

Standarisasi matriks fitur X

# Rescale the feature matrix so that each feature, except for time, has a mean of zero and standard deviation of one
featuresToScale = dataX.drop([‘Time’],axis=1).columns
sX = pp.StandardScaler(copy=True)
dataX.loc[:,featuresToScale] = sX.fit_transform(dataX[featuresToScale])
dataX.describe()

Rekayasa Fitur dan Pemilihan Fitur

  • “Pemilihan fitur tidak diperlukan karena jumlah observasi (284.807) jauh melebihi jumlah fitur (30), sehingga secara signifikan mengurangi kemungkinan overfitting”

Periksa korelasi fitur

correlationMatrix = pd.DataFrame(data=[],index=dataX.columns,
columns=dataX.columns)
for i in dataX.columns:
for j in dataX.columns:
correlationMatrix.loc[i,j] = np.round(pearsonr(dataX.loc[:,i], dataX.loc[:,j])[0],2)

Visualisasi data

count_classes = pd.value_counts(data[‘Class’],sort=True).sort_index()
ax = sns.barplot( x = count_classes.index, y = count_classes/len(data))
ax.set_title(‘Frequency Percentage by Class’)
ax.set_xlabel(‘Class’)
ax.set_ylabel(‘Frequency Percentage’)

Grafik hanya menunjukkan betapa tidak seimbangnya kumpulan data tersebut.

Bersambung!

Saya akan membahas Persiapan Model, Membuat Model Pembelajaran Mesin di cerita berikutnya! Pantau terus!