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!