python从小白到白痴

python使用SVC算法预测汽车是否值得购买

2020-03-09  本文已影响0人  lm_is_dc

汽车是否值得购买

这是一个关于汽车测评的数据集,

类别变量为汽车的测评:

(unacc,ACC,good,vgood)

​ 分别代表(不可接受,可接受,好,非常好)

而6个属性变量分别为

买入价,维护费,车门数,可容纳人数,后备箱大小,安全性。

值得一提的是6个属性变量全部是有序类别变量,

比如「可容纳人数」值可为「2,4,more」,

「安全性」值可为「low, med, high」

price、maint、doors、persons、lug_boot、safty、recommend

导包

import numpy as np
import pandas as pd
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split
from pandas import Series,DataFrame

读取数据

car = pd.read_csv('./data/cars.txt',header=None)
car.head()
这里写图片描述
#修改列索引
car.columns = ['price','maint','doors','persons','lug_boot',
                'safty','recommend']

#特征数据
X = car.iloc[:,:6]
#目标数据
y = car.recommend

字符串转数字

#'price'这一列的类别
X['price'].unique()
这里写图片描述
columns = ['price','maint','doors','persons','lug_boot','safty']


for col in columns:
    #获取每一列中字符串的类别(不重复),返回数组A
    u = X[col].unique()
    
    #返回item在的数组A中的下标
    def convert(item):
        index = np.argwhere( u == item)[0,0]
        return index
    
    #把字符串转换成数字
    X[col] = X[col].map(convert)
X.tail()
这里写图片描述

拆分数据集

X_train,X_test,y_train,y_test = train_test_split(X,y,
                                                test_size=150)

训练模型并预测评分

#使用支持向量机模型,内核函数使用rbf
svc = SVC(kernel='rbf')
#训练模型
svc.fit(X_train,y_train)
#预测
y_ = svc.predict(X_test)
#评分
svc.score(X_test,y_test)
这里写图片描述

使用交叉表对比预测结果

#交叉表
pd.crosstab(index = y_,
            columns = y_test,
            rownames=['predict'],
            colnames=['True'],
            margins=True #统计
           )
这里写图片描述

从交叉表可看出:

acc预测正确32个,预测错误5个,有4个预测成uncc,1个预测成vgood。

good和unacc都预测正确。

vgood预测正确7个,预测错1个。

【后记】:如果文章对您有帮助,打赏下呗。微信 1257309054,欢迎交流学习_,公众号【小梁印记】
微信

在这里插入图片描述
支付宝
在这里插入图片描述
上一篇下一篇

猜你喜欢

热点阅读