python数据挖掘入门与实践(二)

用scikit-learn估计器分类
大多数scikit-learn估计器接收和输出的数据格式均为numpy数组或类似格式。
1、读取csv数据文件的方式:

x = np.zeros((a,b),dtype='float')
y = np.zeros((a,),dtype='bool')
with open(path,'r') as f:
    reader = csv.reader(f)
for i,row in enumerate(reader):
    data = [float(datum) for datum in row[:-1]]
    x[i] = data
    y[i] = row[-1] == 'label' (二分类)

2、 利用matplotlib作图时,首先要告诉jupyter notebook,我们要在笔记本中作图
%matplotlib inline
3、对数据的预处理。比如:选取最具区分度的特征、创建新特征、对特征进行规范化等
scikit-learn的预处理工具叫作转换器(Transformer),它接受原始数据集,返回转换后的数据集。除了处理数值型特征,转换器还能用来抽取特征。
MinMaxScaler类:把每个特征的值域规范化为0到1之间

from sklearn.preprocessing import MinMaxScaler
x_transfromed = MinMaxScaler().fit_transform(X)

为使每条数据各特征值的和为1,使用sklearn.preprocessing.Normalizer。
为使各特征的均值为0,方差为1,使用sklearn.preprocessing.StandardScaler,常用作规范化的基准。
为将数值型特征的二值化,使用sklearn.preprocessing.Binarizer,大于阈值的为1,反之为0。
4、流水线,跟踪记录数据挖掘的操作过程
流水线的输入为一连串的数据挖掘步骤,其中最后一步必须是估计器,前几步是转换器。每一步都用元组(‘名称’,步骤)来表示。
创建流水线之前,先导入Pipeline对象。
第一个元组规范特征取值范围,第二个元组实现预测功能。我们把第一步叫作规范特征取值(scale),第二步叫作预测(predict),也可以用其他名字。元组的第二部分是实际的转换器对象或估计器对象。

from sklearn.pipeline import Pipeline
scaling_pipeline = Pipeline([('scale',MinMaxScaler()),('predict',KNeighborsClassifier())])

实际运行的时候将参数中的估计器赋值为流水线scaling_pipeline,在该例中,这样的赋值可以直接完成流水线中对数据的标准化处理和指定估计器的操作,所以第二个参数直接设置为原数据集(未经标准化处理)

猜你喜欢

转载自blog.csdn.net/hengaheng/article/details/88091784