python standardscaler_Python快速实战机器学习之数据预处理
前言
機器學(xué)習(xí)是如今人工智能時代背景下一個重要的領(lǐng)域,它應(yīng)用廣泛,如推薦系統(tǒng),文本分析,圖像識別,語言翻譯等等。要想學(xué)通這個大的領(lǐng)域不是一件容易的事情,這個“Python快速實戰(zhàn)機器學(xué)習(xí)”系列,用Python代碼實踐機器學(xué)習(xí)里面的算法,旨在理論和實踐同時進行,快速掌握知識。
本文概要
1、學(xué)會用pandas導(dǎo)入數(shù)據(jù);
2、學(xué)會用matplotlib可視化數(shù)據(jù);
3、學(xué)會用sklearn給標簽編碼。
4、學(xué)會用sklearn劃分數(shù)據(jù)集。
5、學(xué)會用sklearn進行特征縮放。
導(dǎo)入數(shù)據(jù)
import?pandas?as?pddf?=?pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data',header=None)df.tail()我們使用pandas讀取數(shù)據(jù),然后通過pandas中的tail方法輸出最后五行數(shù)據(jù),看一下Iris數(shù)據(jù)集格式:
這是一個來自叫做“UCI Machine Learning Repository”數(shù)據(jù)集。UCI Machine Learning Repository:它是網(wǎng)絡(luò)中最古老的數(shù)據(jù)集源之一,是尋找各種有趣數(shù)據(jù)集的第一選擇。在這里,盡管數(shù)據(jù)集都是用戶自行貢獻的,但清潔程度仍然很高。此外,你可以直接從 UCI Machine Learning Repository 上下載數(shù)據(jù),無需注冊。
這個數(shù)據(jù)集是關(guān)于鳶尾花分類的問題,一個150個數(shù)據(jù),第一列是編號,第二列到第五列是鳶尾花的各種參數(shù),也叫做“特征(features)”是我們判斷鳶尾花屬于哪種的依據(jù)。最后一列就是鳶尾花的種類。
數(shù)據(jù)可視化
import?numpy?as?npimport?matplotlib.pyplot?as?pltY?=?df.iloc[0:100,4].valuesX?=?df.iloc[0:100,[0,2]].valuesplt.scatter(X[:50,0],?X[:50,1],?color='red',?marker?=?'o',?label?=?'setosa')plt.scatter(X[50:100,0],?X[50:100,1],?color='blue',?marker?=?'x',?label?=?'versicolor')plt.xlabel('petal length')plt.ylabel('sepal length')plt.legend(loc='upper left')plt.show()我們抽取出前100條樣本,這正好是Setosa(前五十個數(shù)據(jù))和Versicolor(后五十個數(shù)據(jù))對應(yīng)的樣本,我們將Versicolor對應(yīng)的數(shù)據(jù)作為類別1,Setosa對應(yīng)的作為-1。對于特征,我們抽取出sepal length和petal length兩維度特征,然后用散點圖對數(shù)據(jù)進行可視化:
標簽編碼
from?sklearn.preprocessing?import?LabelEncoderlabelencoder_Y = LabelEncoder()Y?=??labelencoder_Y.fit_transform(Y)我們使用sklearn中的preprocessing模塊中LabelEncoder函數(shù)給鳶尾花的種類Y編碼,因為在編碼之前,Y存儲的是鳶尾花的名字,也就是字符串變量。我們無法用字符串變量進行數(shù)值計算,因此我們需要把它變成0,1,2這種格式的數(shù)據(jù)。大家可以打印編碼后的Y來查看編碼的效果。
劃分數(shù)據(jù)
from?sklearn.model_selection?import?train_test_splitX_train,?X_test,?Y_train,?Y_test?=?train_test_split(?X?,?Y?,?test_size?=?0.2,?random_state?=?0)print?(X_train.shape)print?(X_test.shape)我們使用sklearn中的切分數(shù)據(jù)集的模塊,model_selection來完成訓(xùn)練集和測試集的劃分。一般而言我們隨機從整個數(shù)據(jù)集中找到80%的數(shù)據(jù)作為訓(xùn)練集,另外20%的數(shù)據(jù)作為測試集。一個更加嚴謹?shù)霓k法是將整個數(shù)據(jù)集隨機劃分成五份,然后依次用其中的一份作為測試集,另外四份合并作為訓(xùn)練集,對算法運行五次,最后取五次的平均值作為最終的結(jié)果。這里我們只用一次,作為演示。大家可以看到我們打印了訓(xùn)練集和數(shù)據(jù)集的形狀,的確按照八二分。
特征縮放
from?sklearn.preprocessing?import?StandardScalersc_X?=?StandardScaler()X_train?=?sc_X.fit_transform(X_train)X_test?=?sc_X.fit_transform(X_test)由于我們的特征不止一個維度,每個維度之間沒有同一個刻度,會導(dǎo)致兩個維度之間的數(shù)據(jù)差距特別大??赡芤粋€維度的數(shù)據(jù)是0.1,0.2這種小于1的數(shù)字;而另一個維度是1000,2000這種非常大的數(shù)字。因此,我們需要給特征縮放,讓他們都在同一個尺度,方便后面進行模型計算。
總結(jié)
以上是生活随笔為你收集整理的python standardscaler_Python快速实战机器学习之数据预处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: layui结合form,table的全选
- 下一篇: css padding效果,CSS Pa