car-evaluation/逻辑回归
一、任务背景
本数据集来自UCI,描述的是对一种车型的评价,车子具有 buying,maint,doors,persons,lug_boot and safety六种属性,而车子的好坏分为uncc,ucc,good and vgood四种。我们这次机器学习的目的就是训练一种模型能够自动评价一款车型的好坏。
二、获取数据
#获取数据
data = pd.read_excel('car_data1.xlsx')
data.head()#预览一下数据
Unnamed: 0 | buying | maint | doors | persons | lug_boot | safety | class | |
---|---|---|---|---|---|---|---|---|
0 | 0 | vhigh | vhigh | 2 | 2 | small | low | unacc |
1 | 1 | vhigh | vhigh | 2 | 2 | small | med | unacc |
2 | 2 | vhigh | vhigh | 2 | 2 | small | high | unacc |
3 | 3 | vhigh | vhigh | 2 | 2 | med | low | unacc |
4 | 4 | vhigh | vhigh | 2 | 2 | med | med | unacc |
#检查每种属性的种类
for i in data.columns:print(data[i].unique(),"\t",data[i].nunique())
[ 0 1 2 ... 1725 1726 1727] 1728
['vhigh' 'high' 'med' 'low'] 4
['vhigh' 'high' 'med' 'low'] 4
['2' '3' '4' '5more'] 4
['2' '4' 'more'] 3
['small' 'med' 'big'] 3
['low' 'med' 'high'] 3
['unacc' 'acc' 'vgood' 'good'] 4
sns.countplot(data['class'])
<AxesSubplot:xlabel='class', ylabel='count'>
从表格中可以看到标签分类是极度不平均的
接下来进行相关性分析
fig=plt.figure(figsize=(10,6))
sns.heatmap(data.corr(),annot=True)
<AxesSubplot:>
从表格中可以看到基本上每一种属性和分配标准都属于弱相关性
三、数据处理
#将字符串转换为整数型,数据处理
from sklearn.preprocessing import LabelEncoder
le=LabelEncoder()
for i in data.columns:data[i]=le.fit_transform(data[i])
data
Unnamed: 0 | buying | maint | doors | persons | lug_boot | safety | class | |
---|---|---|---|---|---|---|---|---|
0 | 0 | 3 | 3 | 0 | 0 | 2 | 1 | 2 |
1 | 1 | 3 | 3 | 0 | 0 | 2 | 2 | 2 |
2 | 2 | 3 | 3 | 0 | 0 | 2 | 0 | 2 |
3 | 3 | 3 | 3 | 0 | 0 | 1 | 1 | 2 |
4 | 4 | 3 | 3 | 0 | 0 | 1 | 2 | 2 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
1723 | 1723 | 1 | 1 | 3 | 2 | 1 | 2 | 1 |
1724 | 1724 | 1 | 1 | 3 | 2 | 1 | 0 | 3 |
1725 | 1725 | 1 | 1 | 3 | 2 | 0 | 1 | 2 |
1726 | 1726 | 1 | 1 | 3 | 2 | 0 | 2 | 1 |
1727 | 1727 | 1 | 1 | 3 | 2 | 0 | 0 | 3 |
1728 rows × 8 columns
#通过皮尔逊相关系数可以知道,所有属性和class的相关性是比较弱的
X=data[data.columns[:-1]]
y=data['class']#标签
X
Unnamed: 0 | buying | maint | doors | persons | lug_boot | safety | |
---|---|---|---|---|---|---|---|
0 | 0 | 3 | 3 | 0 | 0 | 2 | 1 |
1 | 1 | 3 | 3 | 0 | 0 | 2 | 2 |
2 | 2 | 3 | 3 | 0 | 0 | 2 | 0 |
3 | 3 | 3 | 3 | 0 | 0 | 1 | 1 |
4 | 4 | 3 | 3 | 0 | 0 | 1 | 2 |
... | ... | ... | ... | ... | ... | ... | ... |
1723 | 1723 | 1 | 1 | 3 | 2 | 1 | 2 |
1724 | 1724 | 1 | 1 | 3 | 2 | 1 | 0 |
1725 | 1725 | 1 | 1 | 3 | 2 | 0 | 1 |
1726 | 1726 | 1 | 1 | 3 | 2 | 0 | 2 |
1727 | 1727 | 1 | 1 | 3 | 2 | 0 | 0 |
1728 rows × 7 columns
四、模型训练
#用sklearn自带的区分数据集和测试集
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=10)#三七开
#选择逻辑回归进行训练模型
from sklearn.linear_model import LogisticRegression
#from LogisticRegression import LogisticRegression
from sklearn.model_selection import train_test_split,cross_val_score
from sklearn.metrics import classification_report, confusion_matrix
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import GridSearchCV
logreg=LogisticRegression(solver='newton-cg',multi_class='multinomial')
logreg.fit(X_train,y_train)
LogisticRegression(multi_class='multinomial', solver='newton-cg')
pred=logreg.predict(X_test)
logreg.score(X_test,y_test)
0.7225433526011561
五、结论
#或许逻辑回归并不是一个非常高的方法
from sklearn.model_selection import learning_curve
lc=learning_curve(logreg,X_train,y_train,cv=10,n_jobs=-1)
size=lc[0]
train_score=[lc[1][i].mean() for i in range (0,5)]
test_score=[lc[2][i].mean() for i in range (0,5)]
fig=plt.figure(figsize=(12,8))
plt.plot(size,train_score)
plt.plot(size,test_score)
[<matplotlib.lines.Line2D at 0x1fd0bb8dd00>]
从下面的学习曲线可以看到,使用逻辑回归的情况下,当数据量越来越大的时候,预测的精确度是在不断减小的。因此说明后续的课题研究应当着眼于尝试更好的机器学习方法来训练一个更好的分类模型。
六、代码连接:
链接:https://pan.baidu.com/s/1DqkpRh_ZvK0W3cZVxJbEQA
提取码:1qly
car-evaluation/逻辑回归相关推荐
- Spark LogisticRegression 逻辑回归之建模
导入包 import org.apache.spark.sql.SparkSession import org.apache.spark.sql.Dataset import org.apache.s ...
- 机器学习常见的几个误区--逻辑回归的变量之间如果线性相关
原文:http://blog.sina.com.cn/s/blog_5357c0af0102uxoh.html 下面罗列的几个在机器学习算法实际应用中误区,解决了我很多困惑,推荐大家读一下: Mach ...
- kaggle信用卡欺诈看异常检测算法——无监督的方法包括: 基于统计的技术,如BACON *离群检测 多变量异常值检测 基于聚类的技术;监督方法: 神经网络 SVM 逻辑回归...
使用google翻译自:https://software.seek.intel.com/dealing-with-outliers 数据分析中的一项具有挑战性但非常重要的任务是处理异常值.我们通常将异 ...
- Spark MLlib回归算法------线性回归、逻辑回归、SVM和ALS
Spark MLlib回归算法------线性回归.逻辑回归.SVM和ALS 1.线性回归: (1)模型的建立: 回归正则化方法(Lasso,Ridge和ElasticNet)在高维和数据集变量之间多 ...
- 逻辑回归 python_深入研究Python的逻辑回归
逻辑回归 python Classification techniques are an essential part of machine learning and data science app ...
- python归一化 增大差异_Python逻辑回归模型原理及实际案例应用
前言 上面我们介绍了线性回归, 岭回归, Lasso回归, 今天我们来看看另外一种模型-"逻辑回归". 虽然它有"回归"一词, 但解决的却是分类问题 目录 1. ...
- 逻辑回归分类python实例_Python逻辑回归原理及实际案例应用
前言 目录 1. 逻辑回归 2. 优缺点及优化问题 3. 实际案例应用 4. 总结 正文 在前面所介绍的线性回归, 岭回归和Lasso回归这三种回归模型中, 其输出变量均为连续型, 比如常见的线性回归 ...
- 二、 FATE实战:实现横向逻辑回归任务的训练及预测
文章目录 前言 一.数据集描述 1. 数据描述 2. 逻辑回归模型 二.FATE单机版部署 1.安装centos7 2. 安装Docker 3. FATE-standalone部署 三.FATE实现横 ...
- 模型建模流程及逻辑回归案例
预测性模型 预测性建模基于用户历史信息去预测其将来的行为,从而为市场策略提供一定参考 逻辑/线性回归模型是帮助提高营销活动一个主要工具,能针对用户实现精准营销 建立模型 step-wise:向前,向后 ...
- OvR逻辑回归多分类算法
OvR 在二分类逻辑回归的基础上,采用One vs Rest的方法进行多分类.最终分类由概率最高的OvR决定.在二分类实验中,会发现对versicolor的分类准确性和覆盖率很差,对virginica ...
最新文章
- windows defender和windows firewall
- centos 搭建 svn服务器
- 阿里云 yum无法正常使用的解决办法 (转)
- 回文数的个数、杨辉三角
- concat函数_三、P57-61 MySQL中常用函数
- std::tostring_枚举:如何正确使用name()和toString()方法
- Autorize插件的使用方法
- 以links方式安装eclipse插件
- Oralce weblogic 11g 安装部署使用手册
- 南航计算机科学与技术学院老师,南航计算机科学与技术学院导师介绍:孙涵
- 测试质量保障体系的建立
- 为什么泛型类的类型不能是基本数据类型
- android 壁纸制作教程,[教程]怎样制作Android手机壁纸/桌面
- 817考研c语言程序设计,2017年沈阳航空航天大学计算机学院817程序设计[专业硕士]考研题库...
- 4G车牌识别摄像机 瞬间启动 快速唤醒抓拍 超低功耗硬件方案
- 异构群体机器人协作任务分配(群体智能论文学习)
- mysql数据库1067错误解决方法
- 这个世界从来没有任何一件工作叫“钱多、事少、离家近”
- 【编译原理】龙书第三章作业答案
- html怎么显示平方,崔自信 的日志-在html页面中,通过div展示1-20的平方数和立方数...
热门文章
- dede调用dz论坛数据-html方式调用
- 杭州一公司开20万月薪抢AIGC算法工程师;SpaceX「星舰」发射任务失败;华为宣布实现ERP自主可控,突破封锁|极客头条...
- B站与西瓜视频,Up主们该如何抉择?
- 硬汉也有软柔情 浪潮软实力大揭秘
- 硬件设计电源系列文章-DCDC转换器电感和电容的选择
- Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use
- 还在肉眼找bug??赶紧进来!!!程序员一定要学的调试技巧.
- heic是什么图片格式?怎么转成jpg
- tf.data官方教程 - - 基于TF-v2
- css里那些惊艳程序员的背景色