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.]])
未完待续。。。。。。