sklearn learn preprocessing

train_test_split

sklearn.model_selection.train_test_split(*arrays,
    test_size(float,int/None),#default:0.25
    train_size(float,int/None),#default:None
    random_state(int/None),#default:None
    shuffle(boolean),#default:true,是否
    stratify(array-like/None)#default:None
    )

stratify:测试集和训练集中的类标签比例同原始的样本中类标签的比例相同,都为2:3

import numpy as np
from sklearn.model_selection import train_test_split
X = np.arange(20)
y = ['A','A','A','A','A','A','A','A','A','A','B','B','B','B','B','B','B','B','B','B']
X_train , X_test , y_train,y_test = train_test_split(X,y,test_size=0.2
                                                     ,stratify=y)
X_test ,y_test

随机算子

在学习机器学习的过程中,常常遇到random_state这个参数,下面来简单叙述一下它的作用。

为什么需要用到这样一个参数random_state(随机状态)?

Ans:构建模型、切分数据集、生成数据集时,其都是一个随机的过程,但每次的随机数不同。如果希望结果可以重现,固定random_state是非常重要的。固定random_state后,每次构建的模型是相同的、生成的数据集是相同的、每次的拆分结果也是相同的。

import random
for i in range(10):
    print random.randint(1,100)

#固定随机算子每次运行数据一样,但随机
#用处是控制每次的随机
import random
random.seed(111)
for i in range(10):
    print random.randint(1,100)

LabelEncoder和OneHotEncoder

ML的特征类别分为连续型特征离散型特征

LabelEncoder

利用LabelEncoder() 将转换成连续的数值型变量。即是对不连续的数字或者文本进行编号

from sklearn.preprocessing import LabelEncoder

X = df.loc[:,2:].values
Y = df.loc[:,1].values
le = LabelEncoder()
y = le.fit_transform(Y)
le.classes_#classes_得到几个类别
le.transform(['M','B'])#transform将数据转化为连续的数值型变量

OneHotEncoder

离散特征有多少取值,就用多少维来表示该特征

from sklearn import preprocessing
enc = preprocessing.OneHotEncoder()
enc.fit([[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]])    #fit来学习编码
enc.transform([[0, 1, 3]]).toarray()    #进行编码
#array([[ 1.,  0.,  0.,  1.,  0.,  0.,  0.,  0.,  1.]])

未完待续。。。。。。

猜你喜欢

转载自www.cnblogs.com/tillnight1996/p/10657779.html