第7章 sklearn構造數(shù)據(jù)分析模型_第1頁
第7章 sklearn構造數(shù)據(jù)分析模型_第2頁
第7章 sklearn構造數(shù)據(jù)分析模型_第3頁
第7章 sklearn構造數(shù)據(jù)分析模型_第4頁
第7章 sklearn構造數(shù)據(jù)分析模型_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第7章sklearn構造數(shù)據(jù)分析模型

本章內(nèi)容7.1機器學習基礎7.2機器學習庫sklearn的應用實驗七

sklearn機器學習應用7.1機器學習基礎7.1.1機器學習概念機器學習系統(tǒng)是從歷史數(shù)據(jù)中不斷調整參數(shù)訓練出模型,輸入新的數(shù)據(jù)從模型中計算出結果。7.1.2機器學習的分類1.監(jiān)督學習有監(jiān)督算法常見的有線性回歸算法、BP神經(jīng)網(wǎng)絡算法、決策樹、支持向量機、K近鄰分類算法(KNN)等2.無監(jiān)督學習無監(jiān)督算法常見的有層次聚類、K-Means算法(K均值算法)、DBSCAN算法等3.半監(jiān)督學習半監(jiān)督學習算法常見的有標簽傳播算法(LPA)、生成模型算法、自訓練算法、半監(jiān)督SVM、半監(jiān)督聚類等4.強化學習7.1.3機器學習流程機器學習的整體流程是一個反饋迭代的過程。經(jīng)歷數(shù)據(jù)的采集獲取數(shù)據(jù)集,對數(shù)據(jù)集中噪聲數(shù)據(jù)、缺失數(shù)據(jù)進行清理后,進行問題的特征提取與選擇,使用機器學習算法對特征進行計算訓練出模型(算法),最后對模型進行評估,根據(jù)評估結果重新特征提取與選擇,訓練模型的反復迭代的過程。7.1.4機器學習庫sklearn的安裝1.pip直接安裝安裝numpy:

pip3installnumpy安裝scipy:

pip3installscipy安裝scikit-learn:

pip3installscikit-learn這樣,pip3安裝的庫就在D:\python3.9\Lib\site-packages路徑下(D:\python3.9是python安裝路徑)。最后輸出Successfullyinstalledscikit-learn-1.0.2表示安裝完成。在命令行里面輸入pip3list測試,能列出sklearn這一項就是安裝成功了。7.1.4機器學習庫sklearn的安裝2.國內(nèi)常用python鏡像源清華:/simple阿里云:/pypi/simple/--trusted-host中國科技大學/simple/華中理工大學:/豆瓣:/simple中國科學技術大學/simple/示例:pipinstall-i/simplenumpy3.下載whl文件安裝首先下載whl文件,可以從/~gohlke/pythonlibs/網(wǎng)站中下載相關包文件,這是windows下Python擴展包網(wǎng)站,進到頁面直接Ctrl+F搜索需要的包文件進行下載。在此要注意所選擇的版本以及對應的位數(shù),下載后用命令行進入whl文件所在目錄,pip3install***.whl(文件全名)。7.2機器學習庫sklearn的應用使用sklearn工具可以方便地進行特征選擇和模型訓練工作,sklearn庫提供了數(shù)據(jù)預處理、監(jiān)督學習、無監(jiān)督學習、模型選擇和評估等系列方法,包含眾多子庫或模塊,例如:數(shù)據(jù)集sklearn.datasets特征預處理sklearn.preprocessing特征選擇sklearn.feature_selection特征抽取feature_extraction模型評估(sklearn.metrics、sklearn.cross_validation)子庫實現(xiàn)機器學習基礎算法的模型訓練(sklearn.cluster、sklearn.semi_supervised、sklearn.svm、sklearn.tree、sklearn.linear_model、sklearn.naive_bayes、sklearn.neural_network)子庫等。sklearn庫常見的引用方式如下:fromsklearnimport<模塊名>。fromsklearnimportdatasetssklearn常用模塊和類庫(模塊)類類別功能說明sklearn.preprocessingStandardScaler無監(jiān)督標準化MinMaxScaler無監(jiān)督區(qū)間縮放Normalizer無信息歸一化,可不依賴于fit()Binarizer無信息定量特征二值化,可不依賴于fit()OneHotEncoder無監(jiān)督定性特征編碼Imputer無監(jiān)督缺失值計算PolynomialFeatures無信息多項式變換,可不依賴于fit()FunctionTransformer無信息自定義函數(shù)變換sklearn.feature_selectionVarianceThreshold無監(jiān)督方差選擇法RFE有監(jiān)督遞歸特征消除法SelectFromModel有監(jiān)督自定義模型訓練選擇法sklearn.decompositionPCA無監(jiān)督PCA降維sklearn.ldaLDA有監(jiān)督LDA降維sklearn.clusterKMeans無監(jiān)督k均值聚類算法DBSCAN無監(jiān)督基于密度的聚類算法sklearn.linear_modelLinearRegression有監(jiān)督線性回歸算法sklearn.neighborsKNeighborsClassifier有監(jiān)督K近鄰分類算法(KNN)sklearn.treeDecisionTreeClassifier有監(jiān)督?jīng)Q策樹分類算法sklearn庫為模型提供的統(tǒng)一接口sklearn庫對所提供得各類算法進行了較好的封裝,幾乎所有算法都可以使用fit()、predict()、score()等函數(shù)進行訓練、預測和評價。每個算法對應一個模型,記為model,sklearn庫為每個模型提供的常用接口如表7-2所示。接口用途model.fit()訓練數(shù)據(jù),監(jiān)督模型時fit(X,Y),非監(jiān)督模型時fit(X)model.predict()預測測試樣本model.predict_proba()輸出預測結果相對應的置信概率model.score()用于評價模型在新數(shù)據(jù)上擬合質量的評分model.transform()對特征進行轉換表7-2sklearn庫為模型提供的統(tǒng)一接口7.2.1scikit-learn常用數(shù)據(jù)集——iris數(shù)據(jù)集sklearn庫中自帶了一些小型標準數(shù)據(jù)集,無須從別處下載任何文件即可進行加載使用,以便用戶快速掌握scikit-learn中各種算法的使用方法。以下代碼分別加載了sklearn.datasets中兩個經(jīng)典數(shù)據(jù)集:iris數(shù)據(jù)集和digits數(shù)據(jù)集。fromsklearnimportdatasetsiris=datasets.load_iris()print(iris.data.shape)#print(iris.items())iris中文指鳶尾植物,該數(shù)據(jù)集內(nèi)包含3種品種的鳶尾花,分別為山鳶尾(Iris-setosa)、變色鳶尾(Iris-versicolor)和維吉尼亞鳶尾(Iris-virginica)。7.2.1scikit-learn常用數(shù)據(jù)集——digits數(shù)據(jù)集fromsklearnimportdatasetsdigits=datasets.load_digits()#print(digits.items())#.items()列出digits數(shù)據(jù)集中所有屬性print(digits.images.shape)sklearn中的digits數(shù)據(jù)集存儲了數(shù)字識別的數(shù)據(jù),包含了1797條記錄,每條記錄又是一個8行8列的矩陣,存儲的是每幅數(shù)字圖里的像素點信息,digits.images.shape返回(1797,8,8)因為sklearn的輸入數(shù)據(jù)必須是(n_samples,n_features)的形狀,所以需要對digits.image做一個編號,把8*8的矩陣,變成一個含有64個元素的向量,具體方法:importpylabaspldata=digits.images.reshape((digits.images.shape[0],-1))data.shape返回(1797,64)以上是sklearn最常用的兩個數(shù)據(jù)集,更多數(shù)據(jù)集可參考scikit-learn官網(wǎng)。7.2.2聚類——KMeans聚類是一個無監(jiān)督學習過程,它無須根據(jù)已有標注進行學習,而是基于樣本數(shù)據(jù)間的相似性自動將數(shù)據(jù)聚集到多個簇中。sklearn提供了多種聚類函數(shù)供不同聚類目的使用,KMeans是聚類中最為常用的算法之一,用以找到給定數(shù)據(jù)集的k個簇的聚類的算法,每個簇的中心采用簇中所含均值計算而成,即基于歐式距離的k均值聚類算法。該算法的目標是使得每個樣本距離其所在簇類中心的距離,較其距其他簇類中心的距離更遠。KMeans基本用法如下。fromsklearn.clusterimportKMeansmodel=KMeans() #輸入?yún)?shù)建立模型model.fit(Data) #將數(shù)據(jù)集Data提供給模型進行聚類7.2.2聚類——基于層次的聚類基于層次的聚類方法,該方法將數(shù)據(jù)對象組成一棵聚類樹,采用自底向上或自頂向下方式遍歷,最終形成聚類。聚合自底向上,聚合首先每個樣本各成一類,然后逐漸合并聚類分裂自頂向下,分裂首先所有樣本歸為一個聚類,然后逐步分裂成更多聚類7.2.2聚類——基于層次的聚類sklearn中的AgglomerativeClustering方法是一種聚合式層次聚類方法,其層次過程方向是自底向上。它首先將樣本集合中的每個對象作為一個初始簇,然后將距離最近的兩個簇合并組成新的簇,再將這個新簇與剩余簇中最近的合并,這種合并過程需要反復進行,直到所有的對象最終被聚到一個簇中。AgglomerativeClustering使用方法如下:fromsklearn.clusterimportAgglomerativeClusteringmodel=AgglomerativeClustering() #輸入?yún)?shù)建立模型model.fit(Data) #將數(shù)據(jù)集Data提供給模型進行聚類7.2.2聚類——基于密度的聚類DBSCAN是一個基于密度的聚類算法。它不是基于距離而是基于密度進行分類,其目標是尋找被低密度區(qū)域分離的高密度區(qū)域,簡單說,它將分布密集的樣本點聚類出來,而將樣本點稀疏的區(qū)域作為分割區(qū)域。這種方法對噪聲點的容忍性非常好,應用廣泛。DBSCAN使用方法如下:fromsklearn.clusterimportDBSCANmodel=DBSCAN() #輸入?yún)?shù)建立模型model.fit(Data) #將數(shù)據(jù)集Data提供給模型進行聚類KMeans聚類示例【例7-1】10個點的聚類。假設有10個點:(1,2),(2,5),(3,4),(4,5),(5,8),(10,13),(11,10),(12,11),(13,15),(15,14),請將它們分成2類,并繪制聚類效果。采用KMeans方法代碼如下。fromsklearn.clusterimportKMeansimportnumpyasnpimportmatplotlib.pyplotaspltdataSet=np.array([[1,2],[2,5],[3,4],[4,5],[5,8],[10,13],[11,10],[12,11],[13,15],[15,14]])km=KMeans(n_clusters=2)km.fit(dataSet)plt.figure(facecolor='w')plt.axis([0,16,0,16])mark=['or','ob']#指定2種顏色--紅色red,藍色blueforiinrange(dataSet.shape[0]): plt.plot(dataSet[i,0],dataSet[i,1],mark[km.labels_[i]])plt.show()運行后的聚類結果如圖7-4所示,類A和類B中的點不同顏色區(qū)分,結果如下:類A(1,2),(2,5),(3,4),(4,5),(5,8),類B(10,13),(11,10),(12,11),(13,15),(15,14)7.2.3分類——K近鄰最常用的分類算法是K近鄰算法,該算法也是最簡單的機器學習分類算法,對大多數(shù)問題都非常有效。K鄰近算法的主要思想是:如果一個樣本在特征空間中最相似(即特征空間中最鄰近)的K個樣本大多數(shù)屬于某一個類別,則該樣本也屬于這個類別。K鄰近算法在sklearn庫中的基本用法如下。fromsklearn.neighborsimportKNeighborsClassifiermodel=KNeighborsClassifier() #建立分類器模型model.fit(Data,y) #為模型提供學習數(shù)據(jù)Data和數(shù)據(jù)對應的標簽結果y7.2.3分類——決策樹決策樹算法也是用于分類的經(jīng)典算法之一,是一種以樹結構(包括二叉樹和多叉樹)形式來表達的預測分析模型,常用于特征中含有類別信息的分類或回歸問題,這種方法非常適合多分類情況。決策樹有分類樹和回歸樹兩種,其中分類樹算法的基本用法如下。fromsklearn.neighborsimportDecisionTreeClassifiermodel=DecisionTreeClassifier() #建立分類器模型model.fit(Data,y)

#為模型提供學習數(shù)據(jù)Data和數(shù)據(jù)對應的標簽結果yK近鄰分類示例【例7-2】基于聚類結果的坐標點分類器。例7-1中將10個點分成了2類A和B?,F(xiàn)在有一個新的點(6,9),在分類結果A和B的基礎上,新的點屬于哪一類呢?采用K臨近方法的分類代碼如下,分類結果如圖7-5所示。fromsklearn.neighborsimportKNeighborsClassifierfromsklearn.clusterimportKMeansimportnumpyasnpimportmatplotlib.pyplotaspltdataSet=np.array([[1,2],[2,5],[3,4],[4,5],[5,8],[10,13],[11,10],[12,11],[13,15],[15,14]])km=KMeans(n_clusters=2)km.fit(dataSet)labels=km.labels_

#使用KMeans聚類結果進行分類knn=KNeighborsClassifier()knn.fit(dataSet,labels)

#學習分類結果data_new=np.array([[6,9]])label_new=knn.predict(data_new)#對點(6,9)進行分類K近鄰分類示例plt.figure(facecolor='w')plt.axis([0,16,0,16])mark=['or','ob']foriinrange(dataSet.shape[0]):

plt.plot(dataSet[i,0],dataSet[i,1],mark[labels[i]])plt.plot(data_new[0,0],data_new[0,1],mark[label_new[0]],markersize=17)#畫新的點plt.show()7.2.4回歸——線性回歸回歸是一個統(tǒng)計預測模型,用以描述和評估因變量與一個或多個自變量之間的關系,即自變量X與因變量y的關系。最簡單的回歸模型是線性回歸。線性回歸的思想是根據(jù)數(shù)據(jù)點形成一個回歸函數(shù)y=f(X),函數(shù)的參數(shù)由數(shù)據(jù)點通過解方程獲得。線性回歸在sklearn庫中的基本用法如下。fromsklearn.linear_modelimportLinearRegressionmodel=LinearRegression() #建立回歸模型model.fit(X,y) #建立回歸模型,X是自變量,y是因變量predicted=model.predict(X_new) #對新樣本進行預測7.2.4回歸——Logistic回歸在實際應用中存在很多二分類問題,可以使用Logistic回歸解決此類問題。在Logistic回歸中,回歸函數(shù)的y值只有兩個可能,也稱為二元回歸。可以使用sklearn庫中LogisticRegression()函數(shù)接收數(shù)據(jù)并進行預測。Logistic回歸在sklearn庫中的基本用法如下。fromsklearn.linear_modelimportLogisticRegressionmodel=LogisticRegression() #建立回歸模型model.fit(X,y) #建立回歸模型,X是自變量,y是因變量predicted=model.predict(X_new) #對新樣本進行預測基于線性回歸模型的預測器代碼示例【例7-3】坐標點的預測器。已知10個點,此時獲得信息,將在橫坐標7的位置出現(xiàn)一個新的點,卻不知道縱坐標。請預測最有可能的縱坐標值。fromsklearnimportlinear_modelimportnumpyasnpimportmatplotlib.pyplotaspltdataSet=np.array([[1,2],[2,5],[3,4],[4,5],[5,8],[10,13],[11,10],[12,11],[13,15],[15,14]])X=dataSet[:,0].reshape(-1,1)y=dataSet[:,1]linear=linear_model.LinearRegression()linear.fit(X,y)#根據(jù)橫縱坐標構造回歸函數(shù)X_new=np.array([[7]])plt.figure(facecolor='w')plt.axis([0,16,0,16])plt.scatter(X,y,color='black')#繪制所有點plt.plot(X,linear.predict(X),color='blue',linewidth=3)plt.plot(X_new,linear.predict(X_new),'Dr',markersize=17)plt.show()7.2.5主成分分析主成分分析(PrincipalComponentAnalysis,PCA),是一種通過統(tǒng)計學方式進行特征降維的方法。PCA是通過正交變換將一組可能存在相關性的變量轉換為一組線性不相關的變量,轉換后的這組變量叫主成分。PCA常用于對高維特征進行降維處理,是一個線性變換,這個變換把原始數(shù)據(jù)映射到一個新的坐標系統(tǒng)中,同時要保留原有數(shù)據(jù)中的大部分信息,即保持投影數(shù)據(jù)的方差最大化。PCA變換在找到第一主成分后,在剩余部分中尋找與第一個主方向垂直的,且投影方差最大的坐標系,即第二主成分,直到剩余方差足夠小或無可再分,這就是主成分分析。在sklearn庫中可使用decomposition模塊的PCA對象進行主成分分析,基本用法如下:fromsklearn.decompositionimportPCAModel=PCA() #輸入?yún)?shù)建立模型model.fit(Data) #將數(shù)據(jù)集Data提供給模型進行訓練Model.transform(Data) #將數(shù)據(jù)集Data提供給模型進行降維PCA降維示例【例7-4】將2維坐標系中的10個坐標點進行降維到1維數(shù)據(jù)。假設有10個點:(1,2),(2,5),(3,4),(4,5),(5,8),(10,13),(11,10),(12,11),(13,15),(15,14),數(shù)據(jù)坐標如圖7-7所示,請將它們降維到1維數(shù)據(jù),采用PCA方法代碼如下。importpandasaspdfromsklearn.decompositionimportPCAimportmatplotlib.pyplotaspltimportseabornassnsplt.rcParams['font.sans-serif']='SimHei'plt.rcParams['axes.unicode_minus']=Falsedf=pd.DataFrame([[1,2],[2,5],[3,4],[4,5],[5,8],[10,13],[11,10],[12,11],[13,15],[15,14]],columns=['X','Y'])plt.title('原始數(shù)據(jù)坐標圖')sns.scatterplot(data=df,x='X',y='Y')plt.show()pca=PCA(n_components=2)#要保留的維度為2pca.fit(df)print(f'可解釋方差比例:{pca.explained_variance_ratio_}')pca=PCA(n_components=1)#要保留的維度為1pca.fit(df)df_new=pca.transform(df)print('PCA降維后的數(shù)據(jù):')print(df_new)PCA降維運行結果可解釋方差比例:[0.974097110.02590289]PCA降維后的數(shù)據(jù):[[9.38326578][6.64495742][6.55995269][5.14829615][2.40998779][-4.64829493][-3.40664784][-4.81830439][-8.21993865][-9.05327401]]7.2.6鳶尾花相關的分類、預測及降維IRIS數(shù)據(jù)集中每個數(shù)據(jù)有四個屬性特征:萼片長度、萼片寬度、花瓣長度、花瓣寬度。1.鳶尾花分類訓練一個分類模型,用來對不同品種鳶尾花進行分類2.鳶尾花萼片寬度預測輸入鳶尾花的萼片長度,使用線性回歸擬合得到萼片寬度預測值3.鳶尾花數(shù)據(jù)降維先利用PCA對IRIS鳶尾花數(shù)據(jù)進行降維,然后在降維后的數(shù)據(jù)上再進行分類和回歸鳶尾花分類使用KNN算法,對鳶尾花數(shù)據(jù)進行分類步驟:將IRIS數(shù)據(jù)集隨機分成140個數(shù)據(jù)的訓練集和10個數(shù)據(jù)的測試集創(chuàng)建模型,使用數(shù)據(jù)集訓練模型對測試集進行分類計算準確率鳶尾花萼片寬度預測建立線性回歸模型,根據(jù)某種鳶尾花萼片長度預測萼片寬度步驟:加載鳶尾花數(shù)據(jù)集創(chuàng)建線性回歸模型,使用數(shù)據(jù)集訓練模型繪制線性回歸函數(shù)圖進行展示

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論