python使用SVC算法


python使用SVC算法評估汽車價值

關注公眾號“輕松學編程”了解更多。

這是一個關於汽車測評的數據集,

類別變量為汽車的測評:

(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】,拉你進群,大家一起交流學習。
如果文章對您有幫助,請我喝杯咖啡吧!

公眾號

公眾號

贊賞碼

關注我,我們一起成長~~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM