LogisticRegression实验

2018-03-07  本文已影响81人  听城

实验目的

了解logistic regression的原理及在sklearn中的使用

实验数据

鸢尾花数据集是由杰出的统计学家R.A.Fisher在20世纪30年代中期创建的,它被公认为用于数据挖掘的最著名的数据集。它包含3种植物种类(Iris setosa、Iris versicolor和Iris virginica),每种各有50个样本。
下载地址:http://archive.ics.uci.edu/ml/datasets/Iris

LogisticRegression 主要参数介绍

class sklearn.linear_model.LogisticRegression(penalty=’l2’, dual=False, tol=0.0001, C=1.0, fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None, solver=’liblinear’, max_iter=100, multi_class=’ovr’, verbose=0, warm_start=False, n_jobs=1)

总结几种优化算法适用情况

正则参数 算法 介绍
L1 liblinear liblinear适用于小数据集;如果选择L2正则化发现还是过拟合,即预测效果差的时候,就可以考虑L1正则化;如果模型的特征非常多,希望一些不重要的特征系数归零,从而让模型系数稀疏化的话,也可以使用L1正则化。
L2 liblinear libniear只支持多元逻辑回归的OvR,不支持MvM,但MVM相对精确。
L2 lbfgs/newton-cg/sag 较大数据集,支持one-vs-rest(OvR)和many-vs-many(MvM)两种多元逻辑回归。
L2 sag 如果样本量非常大,比如大于10万,sag是第一选择;但不能用于L1正则化。

实验过程

数据分析

该数据集共包括 150 行,每行为 1 个样本。每个样本有 5 个字段,凾别是:花萼长度 (单
位 cm)、花萼宽度(单位:cm)、花瓣长度(单位:cm)、花瓣宽度(单位:cm)、类别(共 3
类,分别是:Iris Setosa、Iris Versicolour、Iris Virginica)

实验代码

### 导入相关包
import pandas as pd
from sklearn.linear_model import LogisticRegression
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.model_selection import train_test_split
from sklearn import metrics
data = pd.read_csv('./iris.csv',header=None)
x = data.values[:,:4]
y = data.values[:,4]
cls = LogisticRegression(penalty='l2',solver='newton-cg',multi_class='multinomial')
cls.fit(x_train,y_train)
y_pred = cls.predict(x_test)
accuracy_score = metrics.accuracy_score(y_test,y_pred)   #错误率,也就是np.average(y_test==y_pred)
accuracy_score

结果分析

分类方式选择参数 优化算法参数 准确率
multinomial lbfgs 0.977
multinomial newton-cg 0.977
multinomial sag 0.955
ovr(默认) liblinear(默认) 0.888
ovr newton-cg 0.955
ovr lbfgs 0.955
ovr sag 0.933
上一篇 下一篇

猜你喜欢

热点阅读