旨在从0到1,从数据的来源,数据的preprocessing ,模型的选择,模型参数的调参,到模型的保存,调用,模型评估。基础的必须掌握的东西就要死死印在脑海里。本文模拟一个二分类问题,先generate100条二分类数据,预处理数据集后划分训练集测试集,使用感知机进行训练及预测,对模型进行评估并且可视化预测结果。
数据来源
-
sklearn中已有数据是每个新开始的人不断熟练后绪进程的福利。from sklearn import datasets -
生成数据,使用内置函数,
from sklearn.datasets import make_classification几个常用参数说一下,参数之间有关联,搞不清楚的话可能会执行失败,
n_samples是假数据样本数量1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19n_samples:生成样本的数量
n_features:默认=2,生成样本的总特征数量。包括n_informative信息特征、n_redundant冗余特征、n_repeated重复特征和
n_features-n_informative-n_redundant-n_repeated随机绘制的无用特征特征数,即n_informative() + n_redundant + n_repeated
n_informative:默认=2是信息功能的数量。每个类由多个高斯簇组成,每个高斯簇围绕维子空间中超立方体的顶点。n_informative。对于每个聚类,独立于N(0,1)绘制信息特征,然后在每个聚类中随机线性组合以增加协方差。然后将簇放置在超立方体的顶点上。
n_redundant:冗余信息,informative特征的随机线性组合
n_repeated:默认=0,从信息性和冗余性特征中随机抽取的重复性特征的数量。
n_clusters_per_class:默认= 2,每个类的簇数,即某一个类别是由几个cluster构成的。
n_classes:默认=2,分类问题的类(或标签)数。
shuffle:默认=True,随机排列示例和功能。
random_state:默认=None,确定用于创建数据集的随机数生成。为多个函数调用传递可重复输出的int值。
数据集预处理,划分训练集测试集
对数据进行预处理,预测结果会相对更准确,比如from sklearn import preprocessing,比如正规化,X = preprocessing.scale(X), 使用train_test_split时注意四个变量位置一一对应正确,X_train,X_test,y_train,y_test 。
预测
比如使用感知机处理上面生成的二分类数据,from sklearn.linear_model import Perceptron,了解下常用的参数,clf = Perceptron(fit_intercept=False,max_iter=20,shuffle=False),clf.fit(X_train,y_train),clf.predict(X_test)
评估 可视化
clf.score(X_test,y_test),画出预测结果分布图,采用超平面处理二分类问题,分类结果为0的计为classify_0,分类结果为1的计为classify_1,你可以想像这100条数据都是由两个特征值,得到一个分类结果,所以x轴是特征值1,y轴是特征值2,分类结果为0用绿色的正方形表示,分类结果为1的用红色正三角形表示。接下来绘制分割超平面:由于是二分类问题,这儿的超平面就是一条直线,(能够对样本点进行区分,希望找到这条效果最好的线叫作划分超平面。)
1 | from matplotlib import pyplot as plt |
