线性分类的Jupyter实践
鸢尾花数据集
数据来源和背景:
鸢尾花数据集最初由Edgar Anderson 测量得到,而后在著名的统计学家和生物学家R.A Fisher于1936年发表的文章「The use of multiple measurements in taxonomic problems」中被使用,用其作为线性判别分析(Linear DiscriminantAnalysis)的一个例子,证明分类的统计方法,从此而被众人所知,尤其是在机器学习这个领域。
数据中的两类鸢尾花记录结果是在加拿大加斯帕半岛上,于同一天的同一个时间段,使用相同的测量仪器,在相同的牧场上由同一个人测量出来的。这是一份有着70年历史的数据,虽然老,但是却很经典,详细数据集可以在UCI数据库中找到。
数据集详情:
鸢尾花数据集共收集了三类鸢尾花,即Setosa鸢尾花、Versicolour鸢尾花和Virginica鸢尾花,每一类鸢尾花收集了50条样本记录,共计150条。
数据集包括4个属性,分别为花萼的长、花萼的宽、花瓣的长和花瓣的宽。对花瓣我们可能比较熟悉,花萼是什么呢?花萼是花冠外面的绿色被叶,在花尚未开放时,保护着花蕾。四个属性的单位都是cm,属于数值变量,四个属性均不存在缺失值的情况,以下是各属性的一些统计值如下:
属性 最大值 最小值 均值 方差
萼长 7.9 4.3 5.84 0.83
萼宽 4.4 2.0 3.05 0.43
瓣长 6.9 1.0 3.76 1.76
瓣宽 2.5 0.1 1.20 0.76
数据探索:
在做任何机器学习的任务之前,需要对数据集进行探索,对其要有基本的认识,包括数据背后的业务背景、数据的量级、是否有缺失值、数据属性的数据类型,还有各个属性的极值、均值、分布等汇总统计指标。常用的指标包括:
1、频率和众数,针对无序分类数据集,其中众数是具有最高频率的值。
2、百分位数,主要针对有序数据集,比如我们可计算鸢尾花数据集中的四个属性的10、25、50、75、90等百分位数。
3、位置度量,包括均值和中位数。
4、散布度量,主要用极差和方差两个指标,跟均值和中位数一样,多用于描述连续数据属性。因为极差和方差均对离群值敏感,所以还可以采用绝对平均偏差、中位数绝对偏差和四分位数极差等指标来度量。
5、在多元属性的数据集中,每个属性的散布度量可独立其他属性,使用4中的指标来计算,但对于连续变量的数据,散布度量会更多采用协方差来表示。
参考链接:https://www.jianshu.com/p/6ada344f91ce
LogisticRegression(逻辑回归)
逻辑回归(Logistic Regression)是用于处理因变量为分类变量的回归问题,常见的是二分类或二项分布问题,也可以处理多分类问题,它实际上是属于一种分类方法。
LogisticRegression回归模型在Sklearn中的使用
导入模型
from sklearn.linear_model import LogisticRegression #导入逻辑回归模型
fit()训练:调用fit(x,y)的方法来训练模型,其中x为数据的属性,y为所属类型
clf = LogisticRegression()
print(clf)
clf.fit(train_feature,label)
predict()预测:利用训练得到的模型对数据集进行预测,返回预测结果
predict['label'] = clf.predict(predict_feature)
LogisticRegression回归模型参数说明
LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
intercept_scaling=1, max_iter=100, multi_class='ovr', n_jobs=1,
penalty='l2', random_state=None, solver='liblinear', tol=0.0001,
verbose=0, warm_start=False)
正则化选择参数(penalty):
penalty参数可选择的值为"l1"和"l2",分别对应L1的正则化和L2的正则化,默认是L2的正则化。在调参时如果我们主要的目的只是为了解决过拟合,一般penalty选择L2正则化就够了。但是如果选择L2正则化发现还是过拟合,即预测效果差的时候,就可以考虑L1正则化。当模型的特征非常多,希望一些不重要的特征系数归零,让模型系数稀疏化,可以使用L1正则化。
优化算法选择参数(solver):
solver参数决定了我们对逻辑回归损失函数的优化方法,有4种算法可以选择,分别是:liblinear,lbfgs,newton-cg,sag
参数solver的选择:
当penalty是L2正则化,可选的算法{‘newton-cg’, ‘lbfgs’, ‘liblinear’,
‘sag’}。当penalty是L1正则化,就只能选择‘liblinear’了。
这是因为L1正则化的损失函数不是连续可导的,而{‘newton-cg’,
‘lbfgs’,‘sag’}这三种优化算法时都需要损失函数的一阶或者二阶连续导数。
分类方式选择参数(multi_class):
multi_class参数决定了我们分类方式的选择,有 ovr和multinomial两个值可以选择,默认是ovr。两者区别主要在多元逻辑回归上。 如果选择了ovr,则4