sklearn庫

本文是視頻學習筆記

監督學習(supervised learning):有數據和標籤 如classification,regression
無/非監督學習(unspervised learning):只有數據沒有標籤clustering
半監督學習:結合了監督學習和無監督學習,如只有少部分有標籤
強化學習(reinforcement learning):從經驗中總結提升
遺傳算法(genetic algorithm):與強化學習類似,適者生存不適者淘汰

(一) sklearn 簡單介紹介紹

scikit-learn
sklearn全程圖
在這裏插入圖片描述
一個使用scikit learn的例子:以knn爲例

import numpy as np
from sklearn import datasets
from sklearn.cross_validation import train_test_split
from sklearn.neighbors import KNeighborsClassifier   #導入k近鄰分類器

iris = datasets.load_iris()  #sklearn的數據集中有很多數據,這裏導入iris這種花的數據
iris_X = iris.data   #數據
iris_y = iris.target  #標籤

#print(iris_X[:2,:])  #輸出前兩行,即前兩個數據,一行表示一個數據,一個數據可以有多個屬性,即列
#print(iris_y)

#開始訓練數據,使用train_test_split模塊測試數據佔30%
X_train,X_test,y_train,y_test = train_test_split(iris_X,iris_y,test_size=0.3)

#print(y_train)

knn = KNeighborsClassifier()
knn.fit(X_train,y_train)      #開始訓練數據
#輸出預測值和真實值
print(knn.predict(X_test))    #訓練後的預測值
print(y_test)     #真實值

另外,可以選擇load_iris(return_X_y=True),表示返回data和target,默認是false,表示返回的是字典。比如

>>>  iris

結果爲:

在這裏插入圖片描述
在這裏插入圖片描述
可以看到iris是一個包含兩個數組的字典。而如果直接選擇爲True就可以直接得到這兩個數組
在這裏插入圖片描述
iris有三種類別,可以通過下面打印出來
在這裏插入圖片描述
最後,最上面的代碼結果如下:第一批是預測值,第二批是真實值,可以看到很接近
在這裏插入圖片描述

(二)sklearn數據集

鏈接:sklearn-datasets
數據集中有已經存在的data,當要調用的時候直接datasets.load…即可,也可以datasets.make…自己生成數據。
在這裏插入圖片描述

1)從數據集導入數據

以Boston房價爲例

from sklearn import datasets
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt

loaded_data = datasets.load_boston()
data_X = loaded_data.data
data_y = loaded_data.target

model = LinearRegression()  
model.fit(data_X,data_y)

print(model.predict(data_X[:4,:]))   #測試值,只測試前四個數據
print(data_y[:4])  #真實值

上面的model = LinearRegression()括號裏爲空表示採用了默認值,當然也可以自己調,可以參考:https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html
在這裏插入圖片描述
第一行表示測試數據,第二行表示真實值,看到有一定差別。想提高準確度有兩個方法:

  • 嘗試不同model
  • 嘗試不同參數
  • 嘗試將data先normalise再使用

**補充1:**除了上面的輸出結果之外還可以輸出係數,比如
y=ax1+bx2+cx3+...+consty=ax_1+bx_2+cx_3+...+const
在上面例子中x1,x2,x3...x1,x_2,x_3...分別表示房子面積,採光,地段等等,const表示與y軸交點。現在要把前面的a,b,c....consta,b,c....const輸出,可以採用如下

from sklearn import datasets
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt

loaded_data = datasets.load_boston()
data_X = loaded_data.data
data_y = loaded_data.target

model = LinearRegression()
model.fit(data_X,data_y)
#以y = 0.1x + 0.3爲例
print(model.coef_)  #coefficent,輸出係數 0.1
print(model.intercept_) #跟y軸的交點座標,即0.3

在這裏插入圖片描述
表示a,b,...1.0717,4.64...a,b,...分別等於-1.0717,4.64...
**補充2:**查看都有哪些參數
查看LinearRegression()有哪些參數

print(model.get_params())

在這裏插入圖片描述
這些參數正是我們在上面圖中看到的。n_jobs=1表示用一個核。
**補充3:**輸出準確度

##data_X做預測,data_y作爲真實值
print(model.score(data_X,data_y))

>>> 0.7406077428649428

準確度爲74%

2)自己生成數據來練習
from sklearn import datasets
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt

X,y = datasets.make_regression(n_samples=100,n_features=1,n_targets=1,noise=1)
plt.scatter(X,y)
plt.show()

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章