網(wǎng)站建站查詢最近的重大新聞
當我們拿到數(shù)據(jù)集時,首先需要對數(shù)據(jù)集進行劃分訓(xùn)練集和測試集,sklearn提供了相應(yīng)的函數(shù)供我們使用
一、講解
快速隨機劃分數(shù)據(jù)集,可自定義比例進行劃分訓(xùn)練集和測試集
二、官網(wǎng)API
官網(wǎng)API
sklearn.model_selection.train_test_split(*arrays, test_size=None, train_size=None, random_state=None, shuffle=True, stratify=None)
導(dǎo)包:from sklearn.model_selection import train_test_split
為了方便說明,這里以一個具體的案例進行分析
織物起球等級評定,已知織物起球個數(shù)N、織物起球總面積S、織物起球最大面積Max_s、織物起球平均面積Aver_s、對比度C、光學(xué)體積V這六個特征參數(shù)來確定最終的織物起球等級Grade
說白了:六個特征(N、S、Max_s、Aver_s、C、V),來確定最終的等級(Grade)
數(shù)據(jù)集可以自己簡單整個,csv格式即可,我這里使用的是6個自變量X和1個因變量Y
參數(shù):
①*arrays
傳入因變量和自變量
這里的因變量為六個特征(N、S、Max_s、Aver_s、C、V)
自變量為最終評定的等級(Grade)
具體官網(wǎng)詳情如下:
②test_size
若給該參數(shù)傳入float浮點數(shù),則范圍為[0.0,1.0],表示測試集的比例
若給該參數(shù)傳入int整型數(shù),則表示測試集樣本的具體數(shù)量
若為None,則設(shè)置為train_size參數(shù)的補數(shù)形式
若該test_size參數(shù)和train_size參數(shù)的值均為None,則該test_size設(shè)置為0.25,按float浮點型對待
具體官網(wǎng)詳情如下:
③train_size
若給該參數(shù)傳入float浮點數(shù),則范圍為[0.0,1.0],表示訓(xùn)練集的比例
若給該參數(shù)傳入int整型數(shù),則表示訓(xùn)練集樣本的具體數(shù)量
若為None,則設(shè)置為test_size參數(shù)的補數(shù)形式
該參數(shù)跟test_size類似
具體官網(wǎng)詳情如下:
④random_state
隨機種子random_state,如果要是為了對比,需要控制變量的話,這里的隨機種子最好設(shè)置為同一個整型數(shù)
具體官網(wǎng)詳情如下:
⑤shuffle
是否在分割前對數(shù)據(jù)進行洗牌
如果 shuffle=False 則 stratify 必須為 None
具體官網(wǎng)詳情如下:
⑥stratify
如果不是 “None”,數(shù)據(jù)將以分層方式分割,并以此作為類別標簽
具體官網(wǎng)詳情如下:
返回值:
splitting
返回一個包含訓(xùn)練和測試分割之后的列表
具體官網(wǎng)詳情如下:
三、項目實戰(zhàn)
①導(dǎo)包
若導(dǎo)入過程報錯,pip安裝即可
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
from sklearn.model_selection import train_test_split
②加載數(shù)據(jù)集
數(shù)據(jù)集可以自己簡單整個,csv格式即可,我這里使用的是6個自變量X和1個因變量Y
通過pandas讀入文本數(shù)據(jù)集,展示前五行數(shù)據(jù)
fiber = pd.read_csv("./fiber.csv")
fiber.head(5) #展示下頭5條數(shù)據(jù)信息
③劃分數(shù)據(jù)集
前六列是自變量X,最后一列是因變量Y
參數(shù):
test_size
:測試集數(shù)據(jù)所占比例,這里是0.25,表示測試集占總數(shù)據(jù)集的25%
train_size
:訓(xùn)練集數(shù)據(jù)所占比例,這里是0.75,表示訓(xùn)練集占總數(shù)據(jù)集的75%
random_state
:隨機種子,為了控制變量
shuffle
:是否將數(shù)據(jù)進行打亂
因為我這里的數(shù)據(jù)集共48個,訓(xùn)練集0.75,測試集0.25,即訓(xùn)練集36個,測試集12個
返回值:
依此返回四個list,分別為訓(xùn)練集的自變量、測試集的自變量、訓(xùn)練集的因變量和測試集的因變量,分別通過X_train, X_test, y_train, y_test進行接收
X = fiber.drop(['Grade'], axis=1)
Y = fiber['Grade']X_train, X_test, y_train, y_test = train_test_split(X,Y,train_size=0.75,test_size=0.25,random_state=42,shuffle=True)print(X_train.shape) #(36,6)
print(y_train.shape) #(36,)
print(X_test.shape) #(12,6)
print(y_test.shape) #(12,)
根據(jù)返回的四個list的shape可以看到數(shù)據(jù)集已經(jīng)成功按自定義需求劃分
⑤完整代碼
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
from sklearn.model_selection import train_test_splitfiber = pd.read_csv("./fiber.csv")
fiber.head(5) #展示下頭5條數(shù)據(jù)信息X = fiber.drop(['Grade'], axis=1)
Y = fiber['Grade']X_train, X_test, y_train, y_test = train_test_split(X,Y,train_size=0.75,test_size=0.25,random_state=42,shuffle=True)print(X_train.shape) #(36,6)
print(y_train.shape) #(36,)
print(X_test.shape) #(12,6)
print(y_test.shape) #(12,)