python與機器學習入門(1)數據預處理
在對數據進行分析時,經常會遇到數據缺失或者異常的情況
在這樣的數據多的情況下刪掉數據終歸會對整體造成一定的影響
所以採取對數據進行處理的方法讓缺失或者異常的數據有數可用
例如用均值或者最值進行代替
本文便用少量的數據進行分析
下面的數據存在著缺失,數據表示的來自某一些國家的人的年齡,薪資,是否結婚
首先導入數據文件,設置數據文件的自變數X,因變數y
X取除了最後一列的所有值 y取最後一列的值
dataset=pd.read_csv(Data.csv)X=dataset.iloc[:,:-1].values #自變數矩陣 # iloc是取矩陣的某行某列 除第一列外的所有列y=dataset.iloc[:,3].values #取第三列
接著,用Imputer類對缺失數據進行處理
在Imputer類的參數里 mean是指的是均值,median、most_frequent指的是中值和最大值 用fit進行擬合之後,transform出來缺失值
imputer =Imputer(missing_values=NaN,strategy=mean,axis=0)# 0 是列的均值 1 是行的均值imputer=imputer.fit(X[:,1:3]) #用數據擬合 fit X的前兩列X[:,1:3]=imputer.transform(X[:,1:3]) #計算缺失數據
經過處理之後呢,輸出X可見是沒有缺失數據的
對第一列和最後一列的虛擬值進行編碼
X[:, 0] = labelencoder_X.fit_transform(X[:, 0]) #擬合與轉化 所有的行 第0列# 編碼 按照第0列進行分組onehotencoder = OneHotEncoder(categorical_features = [0])X = onehotencoder.fit_transform(X).toarray() #下面兩行的用來控制格式float_formatter= lambda X:"%.2f" % Xnp.set_printoptions(formatter={float_kind:float_formatter})labelencoder_y = LabelEncoder()y = labelencoder_y.fit_transform(y)
最後列印X、y值的時候,便會非常整潔了。
源碼與更詳細的介紹請移步:
機器學習(1)-數據預處理 - CSDN博客
推薦閱讀:
※機器學習入門之泰坦尼克號案例
※使用 Fisher Vector 得到文本向量
※1-5 Unsupervised Learning
※機器學習+AI技術,碰撞出什麼你不知道事
※Essentials of Machine Learning Algorithms (with Python and R Codes)