在做機器學習時需要有資料進行訓練,幸好sklearn提供了很多已經標註好的資料集供我們進行訓練。
本節就來看看sklearn提供了哪些可供訓練的資料集。
這些資料位於datasets中,**為:
載入波士頓房價資料,可以用於線性回歸用:
sklearn.datasets.load_boston:
載入方式為:
from sklearn.datasets import load_boston
boston = load_boston()
print(boston.data.shape)
這個資料集的shape為:
(506, 13)
也就是506行,13列,這裡13列就是影響房價的13個屬性,具體是哪些屬性可以通過如下**列印出來:
print(boston.feature_names)
輸出為:
['crim' 'zn' 'indus' 'chas' 'nox' 'rm' 'age' 'dis' 'rad' 'tax' 'ptratio'
'b' 'lstat']
你說我咋知道這個資料集中有feature_names屬性,我也不知道,我只是把上面的boston整個列印出來看到其中有這個屬性的。
from sklearn.datasets import load_boston
from sklearn.linear_model import linearregression
from sklearn.model_selection import train_test_split
# 載入房價資料
boston = load_boston()
data_x = boston.data
data_y = boston.target
# 拆分訓練集和測試集
x_train, x_test, y_train, y_test = train_test_split(data_x, data_y, test_size=0.3)
# 建立線性回歸模型
model = linearregression()
# 訓練模型
model.fit(x_train, y_train)
# 列印出**的前5條房價資料
print("**的前5條房價資料:")
print(model.predict(x_test)[:5])
# 列印出測試集中實際房價前5條資料
print("測試集中實際房價前5條資料:")
print(y_test[:5])
輸出:
**的前5條房價資料:
[ 17.44807408 27.78251433 18.8344117 17.85437188 34.47632703]
測試集中實際房價前5條資料:
[ 14.3 22.3 22.6 20.6 34.9]
以這個結果集中第一條資料為例,我們**出某房子的**是17.4萬,而實際**是14.3萬。
不過說實話,上面的房價資料只能用於測試演算法,我們真要**房價的話,原始資料的獲得沒有那麼全和規整,因此,在機器學習中,收集資料並清洗也是乙個很重要的工作,髒活累活也必須得幹,光有演算法沒啥用。
花的資料前面乙個博文已經講過了,這裡就不再重複了。
還有手寫數字識別的,這個也很常用:
也可以生成一些虛擬的資料,這些是位於官網的api文件中samples generator一節:
案例源**為:
from sklearn.datasets import make_regression
import matplotlib.pyplot as plt
# 建立100個樣本,1個屬性值的資料,輸出乙個目標值,同時也設定了噪音
x, y = make_regression(n_samples=100, n_features=1, n_targets=1, noise=10)
print(x.shape)
print(y.shape)
# 對x,y畫散點圖,看看長啥模樣的
plt.scatter(x, y)
plt.show()
輸出的資料為:
(100, 1)
(100,)
也就是x值中有100行1列,y值是100行的值。
輸出的圖形為:
看起來接近一條直線。
sklearn儲存模型 老魚學sklearn
訓練好了乙個model 以後總需要儲存和再次 所以儲存和讀取我們的sklearn model也是同樣重要的一步。比如,我們根據 樣本資料訓練了一下房價模型,當使用者輸入自己的房子後,我們就需要根據訓練好的房價模型來 使用者房子的 這樣就需要在訓練模型後把模型儲存起來,在使用模型時把模型讀取出來對輸入...
sklearn交叉驗證 老魚學sklearn
交叉驗證 cross validation 有時亦稱迴圈估計,是一種統計學上將資料樣本切割成較小子集的實用方法。於是可以先在乙個子集上做分析,而其它子集則用來做後續對此分析的確認及驗證。一開始的子集被稱為訓練集。而其它的子集則被稱為驗證集或測試集。交叉驗證是一種評估統計分析 機器學習演算法對獨立於訓...
sklearn交叉驗證3 老魚學sklearn
在上乙個博文中,我們用learning curve函式來確定應該擁有多少的訓練集能夠達到效果,就像乙個人進行學習時需要做多少題目就能擁有較好的考試成績了。本次我們來看下如何調整學習中的引數,類似乙個人是在早上7點鐘開始讀書好還是晚上8點鐘讀書好。資料仍然利用手寫數字識別作為訓練資料 from skl...