校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > Python之Sklearn使用入門教程

Python之Sklearn使用入門教程

熱門標簽:騰訊地圖標注有什么版本 千呼ai電話機器人免費 深圳網絡外呼系統代理商 400電話辦理費用收費 柳州正規電銷機器人收費 鎮江人工外呼系統供應商 高德地圖標注字母 外呼系統前面有錄音播放嗎 申請辦個400電話號碼

1.Sklearn簡介

Scikit-learn(sklearn)是機器學習中常用的第三方模塊,對常用的機器學習方法進行了封裝,包括回歸(Regression)、降維(Dimensionality Reduction)、分類(Classfication)、聚類(Clustering)等方法。當我們面臨機器學習問題時,便可根據下圖來選擇相應的方法。Sklearn具有以下特點:

  • 簡單高效的數據挖掘和數據分析工具
  • 讓每個人能夠在復雜環境中重復使用
  • 建立NumPy、Scipy、MatPlotLib之上

2.Sklearn安裝

Sklearn安裝要求Python(>=2.7 or >=3.3)NumPy (>= 1.8.2)SciPy (>= 0.13.3)。如果已經安裝NumPy和SciPy,安裝scikit-learn可以使用pip install -U scikit-learn

3.Sklearn通用學習模式

Sklearn中包含眾多機器學習方法,但各種學習方法大致相同,我們在這里介紹Sklearn通用學習模式。首先引入需要訓練的數據,Sklearn自帶部分數據集,也可以通過相應方法進行構造,4.Sklearn datasets中我們會介紹如何構造數據。然后選擇相應機器學習方法進行訓練,訓練過程中可以通過一些技巧調整參數,使得學習準確率更高。模型訓練完成之后便可預測新數據,然后我們還可以通過MatPlotLib等方法來直觀的展示數據。另外還可以將我們已訓練好的Model進行保存,方便移動到其他平臺,不必重新訓練。

from sklearn import datasets#引入數據集,sklearn包含眾多數據集
from sklearn.model_selection import train_test_split#將數據分為測試集和訓練集
from sklearn.neighbors import KNeighborsClassifier#利用鄰近點方式訓練數據

###引入數據###
iris=datasets.load_iris()#引入iris鳶尾花數據,iris數據包含4個特征變量
iris_X=iris.data#特征變量
iris_y=iris.target#目標值
X_train,X_test,y_train,y_test=train_test_split(iris_X,iris_y,test_size=0.3)#利用train_test_split進行將訓練集和測試集進行分開,test_size占30%
print(y_train)#我們看到訓練數據的特征值分為3類
'''
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2
 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
 2 2]
 '''

###訓練數據###
knn=KNeighborsClassifier()#引入訓練方法
knn.fit(X_train,y_train)#進行填充測試數據進行訓練

###預測數據###
print(knn.predict(X_test))#預測特征值
'''
[1 1 1 0 2 2 1 1 1 0 0 0 2 2 0 1 2 2 0 1 0 0 0 0 0 0 2 1 0 0 0 1 0 2 0 2 0
 1 2 1 0 0 1 0 2]
'''
print(y_test)#真實特征值
'''
[1 1 1 0 1 2 1 1 1 0 0 0 2 2 0 1 2 2 0 1 0 0 0 0 0 0 2 1 0 0 0 1 0 2 0 2 0
 1 2 1 0 0 1 0 2]
'''

4.Sklearn datasets

Sklearn提供一些標準數據,我們不必再從其他網站尋找數據進行訓練。例如我們上面用來訓練的load_iris數據,可以很方便的返回數據特征變量和目標值。除了引入數據之外,我們還可以通過load_sample_images()來引入圖片。

除了sklearn提供的一些數據之外,還可以自己來構造一些數據幫助我們學習。

from sklearn import datasets#引入數據集
#構造的各種參數可以根據自己需要調整
X,y=datasets.make_regression(n_samples=100,n_features=1,n_targets=1,noise=1)

###繪制構造的數據###
import matplotlib.pyplot as plt
plt.figure()
plt.scatter(X,y)
plt.show()

5.Sklearn Model的屬性和功能

數據訓練完成之后得到模型,我們可以根據不同模型得到相應的屬性和功能,并將其輸出得到直觀結果。假如通過線性回歸訓練之后得到線性函數y=0.3x+1,我們可通過_coef得到模型的系數為0.3,通過_intercept得到模型的截距為1。

from sklearn import datasets
from sklearn.linear_model import LinearRegression#引入線性回歸模型

###引入數據###
load_data=datasets.load_boston()
data_X=load_data.data
data_y=load_data.target
print(data_X.shape)
#(506, 13)data_X共13個特征變量

###訓練數據###
model=LinearRegression()
model.fit(data_X,data_y)
model.predict(data_X[:4,:])#預測前4個數據

###屬性和功能###
print(model.coef_)
'''
[ -1.07170557e-01  4.63952195e-02  2.08602395e-02  2.68856140e+00
 -1.77957587e+01  3.80475246e+00  7.51061703e-04 -1.47575880e+00
  3.05655038e-01 -1.23293463e-02 -9.53463555e-01  9.39251272e-03
 -5.25466633e-01]
'''
print(model.intercept_)
#36.4911032804
print(model.get_params())#得到模型的參數
#{'copy_X': True, 'normalize': False, 'n_jobs': 1, 'fit_intercept': True}
print(model.score(data_X,data_y))#對訓練情況進行打分
#0.740607742865

6.Sklearn數據預處理

數據集的標準化對于大部分機器學習算法來說都是一種常規要求,如果單個特征沒有或多或少地接近于標準正態分布,那么它可能并不能在項目中表現出很好的性能。在實際情況中,我們經常忽略特征的分布形狀,直接去均值來對某個特征進行中心化,再通過除以非常量特征(non-constant features)的標準差進行縮放。

例如, 許多學習算法中目標函數的基礎都是假設所有的特征都是零均值并且具有同一階數上的方差(比如徑向基函數、支持向量機以及L1L2正則化項等)。如果某個特征的方差比其他特征大幾個數量級,那么它就會在學習算法中占據主導位置,導致學習器并不能像我們說期望的那樣,從其他特征中學習。例如我們可以通過Scale將數據縮放,達到標準化的目的。

from sklearn import preprocessing
import numpy as np
a=np.array([[10,2.7,3.6],
      [-100,5,-2],
      [120,20,40]],dtype=np.float64)
print(a)
print(preprocessing.scale(a))#將值的相差度減小
'''
[[ 10.   2.7  3.6]
 [-100.   5.  -2. ]
 [ 120.  20.  40
[[ 0.     -0.85170713 -0.55138018]
 [-1.22474487 -0.55187146 -0.852133 ]
 [ 1.22474487 1.40357859 1.40351318]]
'''

我們來看下預處理前和預處理預處理后的差別,預處理之前模型評分為0.511111111111,預處理后模型評分為0.933333333333,可以看到預處理對模型評分有很大程度的提升。

from sklearn.model_selection import train_test_split
from sklearn.datasets.samples_generator import make_classification
from sklearn.svm import SVC
import matplotlib.pyplot as plt

###生成的數據如下圖所示###
plt.figure
X,y=make_classification(n_samples=300,n_features=2,n_redundant=0,n_informative=2,       random_state=22,n_clusters_per_class=1,scale=100)
plt.scatter(X[:,0],X[:,1],c=y)
plt.show()

###利用minmax方式對數據進行規范化###
X=preprocessing.minmax_scale(X)#feature_range=(-1,1)可設置重置范圍
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3)
clf=SVC()
clf.fit(X_train,y_train)
print(clf.score(X_test,y_test))
#0.933333333333
#沒有規范化之前我們的訓練分數為0.511111111111,規范化后為0.933333333333,準確度有很大提升

7.交叉驗證

交叉驗證的基本思想是將原始數據進行分組,一部分做為訓練集來訓練模型,另一部分做為測試集來評價模型。交叉驗證用于評估模型的預測性能,尤其是訓練好的模型在新數據上的表現,可以在一定程度上減小過擬合。還可以從有限的數據中獲取盡可能多的有效信息。

機器學習任務中,拿到數據后,我們首先會將原始數據集分為三部分:訓練集、驗證集和測試集。 訓練集用于訓練模型,驗證集用于模型的參數選擇配置,測試集對于模型來說是未知數據,用于評估模型的泛化能力。不同的劃分會得到不同的最終模型。

以前我們是直接將數據分割成70%的訓練數據和測試數據,現在我們利用K折交叉驗證分割數據,首先將數據分為5組,然后再從5組數據之中選擇不同數據進行訓練。

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier

###引入數據###
iris=load_iris()
X=iris.data
y=iris.target

###訓練數據###
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3)
#引入交叉驗證,數據分為5組進行訓練
from sklearn.model_selection import cross_val_score
knn=KNeighborsClassifier(n_neighbors=5)#選擇鄰近的5個點
scores=cross_val_score(knn,X,y,cv=5,scoring='accuracy')#評分方式為accuracy
print(scores)#每組的評分結果
#[ 0.96666667 1.     0.93333333 0.96666667 1.    ]5組數據
print(scores.mean())#平均評分結果
#0.973333333333

那么是否n_neighbor=5便是最好呢,我們來調整參數來看模型最終訓練分數。

from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import cross_val_score#引入交叉驗證
import matplotlib.pyplot as plt
###引入數據###
iris=datasets.load_iris()
X=iris.data
y=iris.target
###設置n_neighbors的值為1到30,通過繪圖來看訓練分數###
k_range=range(1,31)
k_score=[]
for k in k_range:
  knn=KNeighborsClassifier(n_neighbors=k)
  scores=cross_val_score(knn,X,y,cv=10,scoring='accuracy')#for classfication
  k_score.append(scores.mean())
plt.figure()
plt.plot(k_range,k_score)
plt.xlabel('Value of k for KNN')
plt.ylabel('CrossValidation accuracy')
plt.show()
#K過大會帶來過擬合問題,我們可以選擇12-18之間的值

我們可以看到n_neighbor在12-18之間評分比較高,實際項目之中我們可以通過這種方式來選擇不同參數。另外我們還可以選擇2-fold Cross Validation,Leave-One-Out Cross Validation等方法來分割數據,比較不同方法和參數得到最優結果。

我們將上述代碼中的循環部分改變一下,評分函數改為neg_mean_squared_error,便得到對于不同參數時的損失函數。

for k in k_range:
  knn=KNeighborsClassifier(n_neighbors=k)
  loss=-cross_val_score(knn,X,y,cv=10,scoring='neg_mean_squared_error')# for regression
  k_score.append(loss.mean())

8.過擬合問題

什么是過擬合問題呢?例如下面這張圖片,黑色線已經可以很好的分類出紅色點和藍色點,但是在機器學習過程中,模型過于糾結準確度,便形成了綠色線的結果。然后在預測測試數據集結果的過程中往往會浪費很多時間并且準確率不是太好。

我們先舉例如何辨別overfitting問題。Sklearn.learning_curve中的learning curve可以很直觀的看出Model學習的進度,對比發現有沒有過擬合。

from sklearn.model_selection import learning_curve
from sklearn.datasets import load_digits
from sklearn.svm import SVC
import matplotlib.pyplot as plt
import numpy as np

#引入數據
digits=load_digits()
X=digits.data
y=digits.target

#train_size表示記錄學習過程中的某一步,比如在10%,25%...的過程中記錄一下
train_size,train_loss,test_loss=learning_curve(
  SVC(gamma=0.1),X,y,cv=10,scoring='neg_mean_squared_error',
  train_sizes=[0.1,0.25,0.5,0.75,1]
)
train_loss_mean=-np.mean(train_loss,axis=1)
test_loss_mean=-np.mean(test_loss,axis=1)

plt.figure()
#將每一步進行打印出來
plt.plot(train_size,train_loss_mean,'o-',color='r',label='Training')
plt.plot(train_size,test_loss_mean,'o-',color='g',label='Cross-validation')
plt.legend('best')
plt.show()

如果我們改變gamma的值,那么會改變相應的Loss函數。損失函數便在10左右停留,此時便能直觀的看出過擬合。

下面我們通過修改gamma參數來修正過擬合問題。

from sklearn.model_selection import validation_curve#將learning_curve改為validation_curve
from sklearn.datasets import load_digits
from sklearn.svm import SVC
import matplotlib.pyplot as plt
import numpy as np
#引入數據
digits=load_digits()
X=digits.data
y=digits.target

#改變param來觀察Loss函數情況
param_range=np.logspace(-6,-2.3,5)
train_loss,test_loss=validation_curve(
  SVC(),X,y,param_name='gamma',param_range=param_range,cv=10,
  scoring='neg_mean_squared_error'
)
train_loss_mean=-np.mean(train_loss,axis=1)
test_loss_mean=-np.mean(test_loss,axis=1)

plt.figure()
plt.plot(param_range,train_loss_mean,'o-',color='r',label='Training')
plt.plot(param_range,test_loss_mean,'o-',color='g',label='Cross-validation')
plt.xlabel('gamma')
plt.ylabel('loss')
plt.legend(loc='best')
plt.show()

通過改變不同的gamma值我們可以看到Loss函數的變化情況。從圖中可以看到,如果gamma的值大于0.001便會出現過擬合的問題,那么我們構建模型時gamma參數設置應該小于0.001。

9.保存模型

我們花費很長時間用來訓練數據,調整參數,得到最優模型。但如果改變平臺,我們還需要重新訓練數據和修正參數來得到模型,將會非常的浪費時間。此時我們可以先將model保存起來,然后便可以很方便的將模型遷移。

from sklearn import svm
from sklearn import datasets

#引入和訓練數據
iris=datasets.load_iris()
X,y=iris.data,iris.target
clf=svm.SVC()
clf.fit(X,y)

#引入sklearn中自帶的保存模塊
from sklearn.externals import joblib
#保存model
joblib.dump(clf,'sklearn_save/clf.pkl')

#重新加載model,只有保存一次后才能加載model
clf3=joblib.load('sklearn_save/clf.pkl')
print(clf3.predict(X[0:1]))
#存放model能夠更快的獲得以前的結果

參考鏈接

此文檔整理自莫煩sklearn視頻教程,鏈接為https://morvanzhou.github.io/tutorials/machine-learning/sklearn/。

到此這篇關于Python之Sklearn使用入門教程的文章就介紹到這了,更多相關Sklearn 入門內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • python數據分析之用sklearn預測糖尿病
  • 運行python提示no module named sklearn的解決方法
  • python安裝sklearn模塊的方法詳解
  • python3.6中anaconda安裝sklearn踩坑實錄
  • Python sklearn中的.fit與.predict的用法說明
  • python實點云分割k-means(sklearn)詳解
  • python中sklearn的pipeline模塊實例詳解
  • python實現密度聚類(模板代碼+sklearn代碼)
  • python sklearn包——混淆矩陣、分類報告等自動生成方式
  • Python sklearn庫實現PCA教程(以鳶尾花分類為例)
  • Python 機器學習工具包SKlearn的安裝與使用

標簽:大慶 合肥 烏蘭察布 郴州 海南 哈爾濱 平頂山 烏蘭察布

巨人網絡通訊聲明:本文標題《Python之Sklearn使用入門教程》,本文關鍵詞  Python,之,Sklearn,使用,入門教程,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python之Sklearn使用入門教程》相關的同類信息!
  • 本頁收集關于Python之Sklearn使用入門教程的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    一区二区三区在线观看欧美| 中文字幕一区二区在线观看| 国产亚洲1区2区3区| 天天做天天摸天天爽国产一区| 色呦呦日韩精品| 亚洲一区二区3| 欧美在线999| 一区二区三区欧美激情| 在线观看精品一区| 亚洲不卡在线观看| 26uuu国产电影一区二区| 国产露脸91国语对白| 欧美国产视频在线| 91成人在线精品| 日韩电影免费一区| 一区二区三区高清不卡| 在线免费精品视频| 午夜亚洲福利老司机| 久久夜色精品一区| 美女网站色91| 中文子幕无线码一区tr| 在线观看国产精品网站| 蜜桃视频一区二区三区| 自拍偷自拍亚洲精品播放| 911国产精品| 91网站视频在线观看| 精品一区二区三区视频 | 99精品欧美一区二区三区综合在线| 国产精品久久久久久户外露出| 欧美在线免费视屏| 国产乱人伦偷精品视频不卡| 亚洲成av人影院| 国产精品国产三级国产aⅴ无密码| 五月婷婷欧美视频| 日韩中文字幕不卡| 91麻豆免费视频| 欧美日韩亚洲丝袜制服| 69精品人人人人| 日韩一级大片在线观看| 国产欧美精品国产国产专区| 国产精品不卡一区二区三区| 亚洲影院久久精品| 免费在线观看一区二区三区| 国产一区二三区好的| 国产成人99久久亚洲综合精品| 不卡高清视频专区| 欧美另类z0zxhd电影| 久久亚洲欧美国产精品乐播| 国产欧美视频一区二区| 亚洲综合久久av| 国产99一区视频免费| 91国产精品成人| 国产亚洲短视频| 亚洲国产va精品久久久不卡综合| 精品亚洲porn| 欧美午夜不卡视频| 中文字幕在线一区| 久久精品久久精品| 欧美日本一区二区| 亚洲日本在线视频观看| 韩国一区二区三区| 3751色影院一区二区三区| 最近日韩中文字幕| 国产大陆a不卡| 欧美一级高清片| 天天做天天摸天天爽国产一区| 成人精品亚洲人成在线| 精品国产一区二区精华| 久久精品72免费观看| 99视频超级精品| 国产亚洲精品资源在线26u| 免费在线观看视频一区| 一本色道久久综合狠狠躁的推荐| 久久亚洲综合av| 国产成人啪午夜精品网站男同| 日韩一区国产二区欧美三区| 图片区小说区国产精品视频| 欧美日韩在线三级| 亚洲激情欧美激情| 欧美日韩不卡视频| 性感美女极品91精品| 欧美高清视频一二三区| 麻豆精品在线看| 久久久久亚洲蜜桃| 成人短视频下载| 亚洲免费看黄网站| 宅男噜噜噜66一区二区66| 日本美女一区二区| 4438x成人网最大色成网站| 久久99深爱久久99精品| 久久久久久久久久看片| 成人国产精品免费观看动漫| 欧美日韩中文字幕精品| 亚洲精品乱码久久久久久黑人| 成人精品在线视频观看| 国产精品国产三级国产a| 色综合色狠狠综合色| 亚洲午夜精品一区二区三区他趣| 欧洲一区在线电影| 美女诱惑一区二区| 国产清纯白嫩初高生在线观看91| 黄色日韩三级电影| 国产精品另类一区| 色综合久久中文综合久久97| 亚洲第一电影网| 日韩欧美在线网站| 国产91丝袜在线播放0| 中文字幕亚洲一区二区va在线| 亚洲男人的天堂在线观看| 国产精品一二三| 亚洲欧洲色图综合| 欧美一区三区二区| 91网页版在线| 国内精品免费在线观看| 亚洲尤物在线视频观看| 国产欧美日韩精品a在线观看| 在线视频一区二区免费| 久久精品国产亚洲aⅴ| 亚洲综合激情另类小说区| 精品国产a毛片| 欧美一区二区三区精品| 色播五月激情综合网| 国产激情一区二区三区四区| 视频在线观看一区| 亚洲成国产人片在线观看| 国产精品国产精品国产专区不片| 91精品国产黑色紧身裤美女| 91在线无精精品入口| 97se亚洲国产综合自在线不卡| 国产综合一区二区| 国产最新精品精品你懂的| 韩国精品久久久| 波波电影院一区二区三区| 国产成人av在线影院| 国产麻豆成人传媒免费观看| 天堂蜜桃91精品| 视频一区欧美精品| 丁香六月综合激情| 波多野结衣中文一区| kk眼镜猥琐国模调教系列一区二区 | 欧美日韩亚洲丝袜制服| 欧美日韩中文一区| 欧美一级日韩免费不卡| 精品福利一区二区三区免费视频| 久久精品亚洲精品国产欧美kt∨| 欧美国产成人在线| 亚洲日本在线看| 奇米一区二区三区| 国产成人在线视频播放| 一本一道综合狠狠老| 欧美va亚洲va在线观看蝴蝶网| 欧美激情一区在线| 石原莉奈在线亚洲二区| 成人免费va视频| 欧美一级高清片| 中文字幕中文字幕一区二区| 亚洲一区二区三区四区五区黄 | 精品99一区二区三区| 国产精品视频一区二区三区不卡| 一级中文字幕一区二区| 中文字幕日韩一区二区| 中文字幕一区视频| 亚洲国产cao| 激情偷乱视频一区二区三区| 狠狠狠色丁香婷婷综合久久五月| 国产精品一区二区在线观看网站| 国产九色精品成人porny | 国产精品中文有码| 国产一区二区精品久久| 不卡的av在线播放| 91精品国产一区二区三区蜜臀| 日韩一级片网址| 亚洲精品免费在线观看| 天天综合色天天综合色h| 国产91精品在线观看| 欧美亚一区二区| 欧美激情一区二区三区全黄| 一区二区三区小说| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 91亚洲精品乱码久久久久久蜜桃| 911精品产国品一二三产区| 国产精品毛片久久久久久久| 奇米一区二区三区av| 色老综合老女人久久久| 久久这里都是精品| 污片在线观看一区二区| 在线亚洲一区观看| 中文字幕乱码亚洲精品一区| 视频一区视频二区中文字幕| 成人精品视频一区二区三区| 欧美α欧美αv大片| 亚洲成人自拍网| 一本一道波多野结衣一区二区 | 97精品久久久午夜一区二区三区| 日韩欧美成人一区| 亚洲国产综合色| 99久久精品99国产精品| 中文字幕一区在线观看| 大桥未久av一区二区三区中文| 久久久天堂av|