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