sklearn-用sklearn.model_selection進(jìn)行訓(xùn)練集和測(cè)試集區(qū)分

通常來說區(qū)分樣本的訓(xùn)練集和測(cè)試集,也是比較簡單的精算,訓(xùn)練集:測(cè)試集為7:3或者8:2都可以蹬耘,當(dāng)存在交叉驗(yàn)證集的時(shí)候(通常樣本比較多的時(shí)候可以考慮分為三層欺嗤,避免出現(xiàn)用測(cè)試集優(yōu)化模型之后得到的結(jié)果有傾向的情況發(fā)生),可以是6:2:2累驮。

這樣的話酣倾,我們得到一個(gè)DataFrame之后,給定一定范圍內(nèi)的隨機(jī)數(shù)谤专,用索引去匹配躁锡,即可得到隨機(jī)打亂的DataFrame,舉個(gè)栗子:

import pandas as pd
import random
import math

df :pd.DataFrame = pd.read_excel(r"model.xls", header=0)

list1 = random.sample(df.index.tolist(), math.floor(len(df)*0.8))#取總樣本數(shù)的0.8為訓(xùn)練集置侍,random.sample可以隨機(jī)從list中取不同個(gè)數(shù)的值
ran_se = pd.Series(list1, name='ran_se', index=list1)#讓索引和列同值稚铣,方便合并

train
_x = pd.merge(df, ran_se, left_index=True, right_index=True)#用索引匹配進(jìn)行合并
#訓(xùn)練集剩下的就是測(cè)試集
test_x = df.drop(index=train_x.index)
test_x  


可以看到,這樣的情況下是可以按照一定的比例把數(shù)值分開的(上面的代碼里忘記加種子了)墅垮,但是也有一點(diǎn)點(diǎn)麻煩,畢竟都要手動(dòng)處理耕漱。

那么在sklearn里面算色,有一個(gè)函數(shù)可以解決這個(gè)問題,自動(dòng)選出訓(xùn)練集螟够,訓(xùn)練標(biāo)簽灾梦,測(cè)試集,測(cè)試標(biāo)簽妓笙。
sklearn.model_selection.train_test_split

看一下這個(gè)函數(shù)的官方文檔:
作用:將數(shù)組或矩陣拆分為隨機(jī)訓(xùn)練子和測(cè)試子集

參數(shù)
*array:具有相同長度的若河,帶索引的序列,可以是lists, numpy arrays, scipy-sparse matrices 和dataframes 寞宫,代表要?jiǎng)澐值木仃嚕ǖ谝粋€(gè)是特征矩陣萧福,第二個(gè)是標(biāo)簽矩陣)

test_size(default=None):當(dāng)是float類型時(shí),代表測(cè)試集的比例辈赋,是int類型時(shí)鲫忍,代表測(cè)試集的個(gè)數(shù)膏燕,是None時(shí),取1-訓(xùn)練集的比例(總數(shù)-訓(xùn)練集的個(gè)數(shù))悟民,訓(xùn)練集參數(shù)也為None時(shí)坝辫,默認(rèn)為0.25

train_size(default=None):同上,不過這個(gè)代表的是訓(xùn)練集射亏,不要弄混了近忙!

random_state(default=None):如果為int類型,則是一個(gè)隨機(jī)種子智润,如果是RandomState 實(shí)例及舍,則random_state就是隨機(jī)數(shù)生成器,如果為None做鹰,則生成器取np.random击纬。

shuffle(default=False):是否要在拆分?jǐn)?shù)據(jù)前隨機(jī)排列數(shù)據(jù),如果這個(gè)參數(shù)是False钾麸,則stratify 參數(shù)必須是None更振。

stratify(default=None):如果不是None,則數(shù)據(jù)以分層方式拆分饭尝,使用此作為類標(biāo)簽肯腕。

隨機(jī)種子的概念比較重要,簡而言之钥平,可以看作一個(gè)給隨機(jī)數(shù)的ID实撒,如果調(diào)用了這個(gè)ID的隨機(jī)數(shù),無論怎么運(yùn)行涉瘾,結(jié)果都是一樣的知态。(可以保證不同時(shí)刻運(yùn)行的隨機(jī)數(shù)是同一序列)

返回值
返回的是拆分之后的序列,是一個(gè)list立叛,長度是原有數(shù)據(jù)的二倍负敏。
可以直接賦值來取得訓(xùn)練集和測(cè)試集,順序分別是train_x, test_x, train_y, test_y秘蛇,不要記混了其做。

得到的訓(xùn)練集和測(cè)試集直接拿來用就好了,都是DataFrame或者Series赁还。

寫一個(gè)簡單的代碼如下:

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split

df1 = pd.read_excel(r"model.xls", header=0)

# print(df1[df1.isnull().T.any()])#列出為空的行
train_df = df1[['電量趨勢(shì)下降指標(biāo)','線損指標(biāo)','告警類指標(biāo)']]
test_df = df1['是否竊漏電']

train_x, test_x, train_y, test_y = train_test_split(train_df, test_df, test_size = 0.2, random_state = 0)#自動(dòng)分為測(cè)試集和訓(xùn)練集,注意返回值的順序
print(train_x)

需要注意的是寫進(jìn)參數(shù)的是兩個(gè)DataFrame妖泄,一個(gè)是特征,一個(gè)是標(biāo)簽艘策,這個(gè)在拆分之前就是要分開的蹈胡。

這種方法明顯比手動(dòng)去拆分要方便一些,sklearn庫中有不少簡便的函數(shù),拿來直接用的確能提升不少效率审残。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末梭域,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子搅轿,更是在濱河造成了極大的恐慌病涨,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件璧坟,死亡現(xiàn)場離奇詭異既穆,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)雀鹃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門幻工,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人黎茎,你說我怎么就攤上這事囊颅。” “怎么了傅瞻?”我有些...
    開封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵踢代,是天一觀的道長。 經(jīng)常有香客問我嗅骄,道長胳挎,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任溺森,我火速辦了婚禮慕爬,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘屏积。我一直安慰自己医窿,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開白布炊林。 她就那樣靜靜地躺著留搔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪铛铁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天却妨,我揣著相機(jī)與錄音饵逐,去河邊找鬼。 笑死彪标,一個(gè)胖子當(dāng)著我的面吹牛倍权,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼薄声,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼当船!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起默辨,我...
    開封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤德频,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后缩幸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體壹置,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年表谊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了钞护。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡爆办,死狀恐怖难咕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情距辆,我是刑警寧澤余佃,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站挑格,受9級(jí)特大地震影響咙冗,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜漂彤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一雾消、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧挫望,春花似錦立润、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蛉幸,卻和暖如春破讨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背奕纫。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來泰國打工提陶, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人匹层。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓隙笆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子撑柔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

推薦閱讀更多精彩內(nèi)容