唐宇迪機器學習之離職預測
阿新 • • 發佈:2018-12-22
最近在看唐宇迪機器學習視訊,這個視訊我覺得很不錯,可是我資源有限,有的視訊沒有配套的資料、資料集或者是程式碼,但還是可以看視訊瞭解其中的一些知識點。
專案介紹
該專案是通過員工對公司的滿意程度、公司對員工的評估、員工薪資水平、員工崗位、員工工作時長等特徵來推斷員工是否會離職。
知識點
-
通過 df.info( ) 可以看到特徵的資料型別,對於int64、float64這樣的資料型別來說放入機器學習演算法是沒有問題的,但是對於object(可理解為str)這樣的資料型別是需要進一步處理的。
eg: 在本專案中是利用pd.get_dummies()直接將其轉為one-hot編碼。部分程式碼如下:salary_dummy = pd.get_dummies(df['salary']) department_dummy = pd.get_dummies(df['depratment']) X = pd.concat([X, salary_dummy], axis = 1) X = pd.concat([X, department_dummy], axis = 1)
ps: 一般來說如果離散的取值之間沒有大小的意義,就用one-hot,如果離散的取值之間有大小的意義就直接對映。
-
修改DataFrame中列的名字:
df.rename(columns = {'修改前的名字':'修改後的名字'}, inplace = True)
-
特徵、標籤之間的相關係數:
df.corr()
-
柱狀圖表示屬性與標籤之間的關係:
部分程式碼如下:import matplotlib.pyplot as plt import seaborn as sns % matplotlib inline plot = sns.factorplot(x = 'department', y = 'left', kind = 'bar',data = df) plot.set_xticklabels(rotation = 45,horizontalalignment = 'right')
ps: sns.factorplot()預設畫的是折線圖,通過新增kind引數可以把折線圖改柱形圖。 -
餅狀圖表示某職位工資分佈情況:
部分程式碼如下:df[df['department'] == 'management']['salary'].value_counts().plot(kind = 'pie', title = 'Management Salary level distribution')
-
柱狀圖表示屬性與標籤之間的關係:
部分程式碼如下:bins = np.linspace(0.0001,1.0001,21) plt.hist(df['left'] == 1]['satisfaction_level'],bins = bins,alpha=0.7,label = 'Employees Left') plt.hist(df['left'] == 0]['satisfaction_level'],bins = bins,alpha=0.5,label = 'Employees Stayed') plt.xlabel('satisfaction_level') plt.xlim(0,1.05) plt.legend(loc = 'best')
-
將訓練資料劃分為訓練集和測試集:
from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3)
-
資料標準化:
資料標準化主要是排除資料大小值對分類器的干擾,這對於資料集中特徵之間取值範圍較大時很有意義。部分程式碼如下:from sklearn.preprocessing import StandardScaler stdsc = StandardScaler() X_train_std = stdsc.fit_trasform(X_train) X_test_std = stdsc.fit_trasform(X_train)
**PS:**它是針對每一個特徵維度來做的,而不是針對樣本。
-
訓練集交叉驗證:
from sklearn.model_selection import ShuffleSplit cv = ShuffleSplit(n_splits = 20,test_size = 0.3)