目录

1、导入必要的包

2、读入数据

3、数据探索

4、数据预处理

6、建立模型

6.1逻辑回归

6.2 K近邻

6.3 决策树

6.4 朴素贝叶斯

6.5 SVC



0、数据集介绍

数据集来源:UCI

UCI Machine Learning Repository: Car Evaluation Data Set

  1. Title: Car Evaluation Database

  2. Sources:
    (a) Creator: Marko Bohanec
    (b) Donors: Marko Bohanec (marko.bohanec@ijs.si)
    Blaz Zupan (blaz.zupan@ijs.si)
    (c) Date: June, 1997

  3. Number of Instances: 1728

  4. Attribute Values:

    buying v-high, high, med, low
    maint v-high, high, med, low
    doors 2, 3, 4, 5-more
    persons 2, 4, more
    lug_boot small, med, big
    safety low, med, high

  5. Missing Attribute Values: none

  6. Class Distribution (number of instances per class)

unacc 1210 (70.023 %)
        acc 384 (22.222 %)
        good 69 ( 3.993 %)
        v-good 65 ( 3.762 %)

1、导入必要的包

from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report
import matplotlib.pyplot as plt
import pandas as pd

2、读入数据

读入数据,并为每个特征命名。

car_data=pd.read_csv("d:/datasets/car_evaluation.csv",names=["buying","maint","doors","person","lug_boot","safety","car_acc"])

3、数据探索

car_data.head()
car_data.tail()
car_data.describe()
car_data.info()
#查看特征与标签的取值
for i in car_data.columns:print(car_data[i].value_counts())

4、数据预处理

标签编码(map方法)。

car_data.car_acc=car_data.car_acc.map({"unacc":1,"acc":0,"good":0,"vgood":0})

特征编码get_dummies())

car_data_=pd.get_dummies(car_data[["lug_boot","safety","buying","maint","doors","person"]])

5、训练集、测试集划分

train_x,test_x,train_y,test_y=train_test_split(car_data_,car_data.car_acc,test_size=0.3,random_state=10)

6、建立模型

6.1逻辑回归

建立模型、训练、预测

lr=LogisticRegression()
lr.fit(train_x,train_y)
y_pre=lr.predict(test_x)

评价

print(classification_report(y_pre,test_y))  #输出分类报告
print(lr.coef_)   #输出回归系数
lr.score(test_x,test_y)  #输出正确率
from sklearn.metrics import accuracy_score
accuracy_score(y_pre,test_y) #输出正确率
from  sklearn.metrics import confusion_matrix
import seaborn as sns
sns.set(font="SimHei")
lgr=LogisticRegression(random_state=1)
lgr.fit(X_train,Y_train)
y_pre=lgr.predict(x_test)
print(lgr.score(x_test,y_test))
ax=sns.heatmap(confusion_matrix(y_test,y_pre),annot=True,fmt="d",xticklabels=["满意","不满意"],yticklabels=["满意","不满意"])
ax.set_ylabel("真实")
ax.set_xlabel("预测")
ax.set_title("混淆矩阵")

6.2 K近邻

建立模型、训练、预测

from sklearn.neighbors import KNeighborsClassifier
kn=KNeighborsClassifier()
kn.fit(X_train,Y_train)
y_pre=kn.predict(x_test)

评价

print(kn.score(x_test,y_test))
print(classification_report(y_test,y_pre))

ax=sns.heatmap(confusion_matrix(y_test,y_pre),annot=True,fmt="d",xticklabels=["满意","不满意"],yticklabels=["满意","不满意"])
ax.set_ylabel("真实")
ax.set_xlabel("预测")
ax.set_title("混淆矩阵")

调参(不同邻居数量对模型的效果的影响)

k_score=[KNeighborsClassifier(n_neighbors=k).fit(X_train,Y_train).score(x_test,y_test) for k in range(1,10)]
import matplotlib.pyplot as plt
plt.plot(range(1,10),k_score,"b")
plt.xlabel("k")
plt.ylabel("正确率")
plt.title("k值对正确率的影响")

6.3 决策树

建立模型、训练、预测

from sklearn.tree import DecisionTreeClassifier
dt=DecisionTreeClassifier(max_depth=3)  #深度较小,为方便可视化
dt.fit(train_x,train_y)
dt_pre=dt.predict(test_x)

评价

dt.score(test_x,test_y)
print(classification_report(dt_pre,test_y))

可视化决策树

前提:已安装graphviz

安装graphviz过程:

  • 下载graphviz,选择与操作系统对应的版本  Download | Graphviz
  • 安装graphviz
  • 修改环境变量(将dot.exe文件的路径加到用户或系统环境变量的path中,一般是:C:\Program Files\Graphviz\bin)
  • 安装graphviz python包:pip install graphviz
  • 重启 jupyter
from sklearn.tree import export_graphviz
from six import StringIO
from IPython.display import Image
import pydotplus
plt.rcParams['font.sans-serif']=['SimHei']  #正常显示中文
plt.rcParams['axes.unicode_minus']=False   #正常显示负号“-”## 输出图片到dot文件
export_graphviz(dt, out_file='tree.dot', feature_names=train_x.columns,rounded=True, filled=True,class_names=['acc', 'unacc'])
## 使用dot文件构造图
graph= pydotplus.graph_from_dot_file('tree.dot')
Image(graph.create_png())

6.4 朴素贝叶斯

from sklearn.naive_bayes import GaussianNB
from sklearn.naive_bayes import BernoulliNB
from sklearn.naive_bayes import MultinomialNB
GNB=GaussianNB()
GNB.fit(train_x,train_y)
y_pred=GNB.predict(test_x)
GNB.score(test_x,test_y)
print(classification_report(test_y,y_pred))
pd.DataFrame(GNB.theta_.T,index=test_x.columns).rename(columns={0:"0类",1:"1类"}).plot(kind="bar",rot=60,figsize=(12,5))

BNB=BernoulliNB()
BNB.fit(train_x,train_y)
y_pred=BNB.predict(test_x)
BNB.score(test_x,test_y)
print(classification_report(test_y,y_pred))
MNB=MultinomialNB()
MNB.fit(train_x,train_y)
y_pred=MNB.predict(test_x)
MNB.score(test_x,test_y)
print(classification_report(test_y,y_pred))

6.5 SVC

from sklearn.svm import SVC
from sklearn.svm import LinearSVC
SVC_=SVC()
SVC_.fit(train_x,train_y)
y_pred=SVC_.predict(test_x)
SVC_.score(test_x,test_y)
print(classification_report(test_y,y_pred))
LSVC_=LinearSVC()
LSVC_.fit(train_x,train_y)
y_pred=LSVC_.predict(test_x)
LSVC_.score(test_x,test_y)
print(classification_report(test_y,y_pred))

数据分析-分类-案例相关推荐

  1. PySpark——随机森林分类案例

    PySpark--随机森林分类案例 一.随机森林 随机森林案例 """ Random Forest Classifier Example. ""&qu ...

  2. python朋友圈点赞统计_Python数据分析实战案例:统计分析微信朋友圈数据(附实操视频)...

    原标题:Python数据分析实战案例:统计分析微信朋友圈数据(附实操视频) 本文内容将通过一个具体实例讲解将朋友圈数据导出为JSON文件的方法,并介绍使用Python统计分析JSON数据的过程. 注: ...

  3. 白话Elasticsearch37-深入聚合数据分析之案例实战Date Histogram Aggregation:统计每月电视销量

    文章目录 概述 官方说明 实例: 统计每月电视销量,没有销量的月份也要统计 概述 继续跟中华石杉老师学习ES,第37篇 课程地址: https://www.roncoo.com/view/55 官方说 ...

  4. 白话Elasticsearch34-深入聚合数据分析之案例实战bucket嵌套实现颜色+品牌的多层下钻分析

    文章目录 概述 案例 需求 解决 Step1.对每种颜色进行bucket分组 Step2.对每种颜色进行bucket分组 , 然后对每个分组再次计算平均价格 Step3.对每种颜色进行bucket分组 ...

  5. 白话Elasticsearch33-深入聚合数据分析之案例实战bucket + metrics 统计每种颜色电视平均价格

    文章目录 概述 官方说明Avg Aggregation 案例:统计每种颜色电视平均价格 概述 继续跟中华石杉老师学习ES,第33篇 课程地址: https://www.roncoo.com/view/ ...

  6. [Python人工智能] 十二.循环神经网络RNN和LSTM原理详解及TensorFlow编写RNN分类案例

    从本专栏开始,作者正式开始研究Python深度学习.神经网络及人工智能相关知识.前一篇讲解了TensorFlow如何保存变量和神经网络参数,通过Saver保存神经网络,再通过Restore调用训练好的 ...

  7. 机器学习Sklearn——红酒分类案例详解决策树模型参数

    目录 1 分类树 1.1 红酒分类案例 1.1.1 导入包 1.1.2 观察.分割数据 1.1.3 三段论 2 参数介绍 2.1 重要参数 2.2 控制随机选项参数 2.3 剪枝参数 3 批量测试合适 ...

  8. 机器学习-新闻分类案例

    新闻分类案例 项目概述 用TF-IDF和词袋表示文档特征 使用 CounterVectorizer 和 TfidfTransformer 计算 TF-IDF 直接使用 TfidfVectorizer ...

  9. 视频教程-Python数据分析与案例教程:分析人口普查数据-Python

    Python数据分析与案例教程:分析人口普查数据 多年互联网从业经验: 有丰富的的企业网站.手游.APP开发经验: 曾担任上海益盟软件技术股份有限公司项目经理及产品经理: 参与项目有益盟私募工厂.睿妙 ...

最新文章

  1. hihoCoder #1047 Random Tree
  2. 什么是BI?什么是DW?ETL(Extract-Transform-Load)是什么?
  3. Docker了解(官方解读)
  4. 《ActionScript 3.0基础教程》——第2章 往舞台动态地添加对象2.1 创建库资源,并为它命名...
  5. java基础(七) 深入解析java四种访问权限
  6. eplan单线原理图多线原理图_【原创分享】西门子PLC电路图高效设计——基于EPLAN与TIA Selection...
  7. python和noip的区别_【noi与noip的区别】
  8. POJ 2054 Color a Tree
  9. java类怎么删除对象_java中对象的生成使用和删除
  10. 适配器模式 Adapter Pattern
  11. 如何在 Mac 上重命名 Apple Magic Mouse?
  12. xv6 syscall实验
  13. 谁再说“游戏没用”,就拿这个回怼他!
  14. 在JavaScript中NaN为什么不等于NaN
  15. python之if-else_Python中的if-else
  16. python画二次函数图像的顶点坐标为_二次函数顶点坐标公式
  17. 扬帆起航——第一篇博客
  18. 显式类型转换和隐式类型转换区别?
  19. UI 自动化的页面对象管理工具之实现思路
  20. 《潮流时装设计——世界顶级时装CAD制板技巧》——1.1 什么是服装CAD

热门文章

  1. Vue与Angular以及React的区别
  2. 王者荣耀测试自己本命英雄软件,王者荣耀中谁是你的本命英雄测试地址 趣推测试王者荣耀中谁是你的本命英雄...
  3. HTML5 video视频制作,控制按钮
  4. 渗透杂记2013-07-31
  5. 6月2亚欧盘黄金走势分析交易策略小心空头反击高位谨慎追多
  6. BATJ大数据架构师带你领略实时计算框架Flink的魅力!
  7. 叮! Q币派送中,快来看看你中奖了吗?
  8. 思科全球副总裁、大中华区首席技术官曹图强:网络安全不是奢侈品,而是必需品...
  9. 达芬奇发明计算机读后感200,三年级读后感:读《达芬奇》有感200字
  10. bat文件开启mysql服务器,bat文件启动mysql服务器