Python實(shí)現(xiàn)基于SVM的分類器的方法
本文代碼來之《數(shù)據(jù)分析與挖掘?qū)崙?zhàn)》,在此基礎(chǔ)上補(bǔ)充完善了一下~
代碼是基于SVM的分類器Python實(shí)現(xiàn),原文章節(jié)題目和code關(guān)系不大,或者說給出已處理好數(shù)據(jù)的方法缺失、源是圖像數(shù)據(jù)更是不見蹤影,一句話就是練習(xí)分類器(▼㉨▼メ)
源代碼直接給好了K=30,就試了試怎么選的,挑選規(guī)則設(shè)定比較單一,有好主意請(qǐng)不吝賜教喲
# -*- coding: utf-8 -*-
"""
Created on Sun Aug 12 12:19:34 2018
@author: Luove
"""
from sklearn import svm
from sklearn import metrics
import pandas as pd
import numpy as np
from numpy.random import shuffle
#from random import seed
#import pickle #保存模型和加載模型
import os
os.getcwd()
os.chdir('D:/Analyze/Python Matlab/Python/BookCodes/Python數(shù)據(jù)分析與挖掘?qū)崙?zhàn)/圖書配套數(shù)據(jù)、代碼/chapter9/demo/code')
inputfile = '../data/moment.csv'
data=pd.read_csv(inputfile)
data.head()
data=data.as_matrix()
#seed(10)
shuffle(data) #隨機(jī)重排,按列,同列重排,因是隨機(jī)的每次運(yùn)算會(huì)導(dǎo)致結(jié)果有差異,可在之前設(shè)置seed
n=0.8
train=data[:int(n*len(data)),:]
test=data[int(n*len(data)):,:]
#建模數(shù)據(jù) 整理
#k=30
m=100
record=pd.DataFrame(columns=['acurrary_train','acurrary_test'])
for k in range(1,m+1):
# k特征擴(kuò)大倍數(shù),特征值在0-1之間,彼此區(qū)分度太小,擴(kuò)大以提高區(qū)分度和準(zhǔn)確率
x_train=train[:,2:]*k
y_train=train[:,0].astype(int)
x_test=test[:,2:]*k
y_test=test[:,0].astype(int)
model=svm.SVC()
model.fit(x_train,y_train)
#pickle.dump(model,open('../tmp/svm1.model','wb'))#保存模型
#model=pickle.load(open('../tmp/svm1.model','rb'))#加載模型
#模型評(píng)價(jià) 混淆矩陣
cm_train=metrics.confusion_matrix(y_train,model.predict(x_train))
cm_test=metrics.confusion_matrix(y_test,model.predict(x_test))
pd.DataFrame(cm_train,index=range(1,6),columns=range(1,6))
accurary_train=np.trace(cm_train)/cm_train.sum() #準(zhǔn)確率計(jì)算
# accurary_train=model.score(x_train,y_train) #使用model自帶的方法求準(zhǔn)確率
pd.DataFrame(cm_test,index=range(1,6),columns=range(1,6))
accurary_test=np.trace(cm_test)/cm_test.sum()
record=record.append(pd.DataFrame([accurary_train,accurary_test],index=['accurary_train','accurary_test']).T)
record.index=range(1,m+1)
find_k=record.sort_values(by=['accurary_train','accurary_test'],ascending=False) # 生成一個(gè)copy 不改變?cè)兞?
find_k[(find_k['accurary_train']>0.95) & (find_k['accurary_test']>0.95) & (find_k['accurary_test']>=find_k['accurary_train'])]
#len(find_k[(find_k['accurary_train']>0.95) & (find_k['accurary_test']>0.95)])
''' k=33
accurary_train accurary_test
33 0.950617 0.95122
'''
''' 計(jì)算一下整體
accurary_data
0.95073891625615758
'''
k=33
x_train=train[:,2:]*k
y_train=train[:,0].astype(int)
model=svm.SVC()
model.fit(x_train,y_train)
model.score(x_train,y_train)
model.score(datax_train,datay_train)
datax_train=data[:,2:]*k
datay_train=data[:,0].astype(int)
cm_data=metrics.confusion_matrix(datay_train,model.predict(datax_train))
pd.DataFrame(cm_data,index=range(1,6),columns=range(1,6))
accurary_data=np.trace(cm_data)/cm_data.sum()
accurary_data
REF:
《數(shù)據(jù)分析與挖掘?qū)崙?zhàn)》
源代碼及數(shù)據(jù)需要可自?。?a target="_blank" rel="external nofollow" >https://github.com/Luove/Data
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Django框架會(huì)話技術(shù)實(shí)例分析【Cookie與Session】
這篇文章主要介紹了Django框架會(huì)話技術(shù),結(jié)合實(shí)例形式分析了Django框架Cookie與Session相關(guān)使用技巧與注意事項(xiàng),需要的朋友可以參考下2019-05-05
動(dòng)感網(wǎng)頁相冊(cè) python編寫簡單文件夾內(nèi)圖片瀏覽工具
這篇文章主要為大家詳細(xì)介紹了動(dòng)感網(wǎng)頁相冊(cè)的制作方法,即利用python編寫簡單文件夾內(nèi)圖片瀏覽工具,感興趣的小伙伴們可以參考一下2016-08-08
windows系統(tǒng)中Python多版本與jupyter notebook使用虛擬環(huán)境的過程
這篇文章主要介紹了windows中Python多版本與jupyter notebook中使用虛擬環(huán)境的安裝過程,本文分步驟給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-05-05
python使用selenium操作瀏覽器的實(shí)現(xiàn)示例
Selenium是一個(gè)模擬瀏覽器瀏覽網(wǎng)頁的工具,主要用于測試網(wǎng)站的自動(dòng)化測試工具,本文主要介紹了python使用selenium操作瀏覽器的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01
pycharm debug功能實(shí)現(xiàn)跳到循環(huán)末尾的方法
今天小編就為大家分享一篇pycharm debug功能實(shí)現(xiàn)跳到循環(huán)末尾的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-11-11
python實(shí)現(xiàn)二維數(shù)組的對(duì)角線遍歷
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)二維數(shù)組的對(duì)角線遍歷,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-03-03
python定時(shí)任務(wù)timeloop庫用法實(shí)例詳解
有些時(shí)候我們需要每隔一段時(shí)間就要執(zhí)行一段程序,或者是往復(fù)循環(huán)執(zhí)行某一個(gè)任務(wù),下面這篇文章主要給大家介紹了關(guān)于python定時(shí)任務(wù)timeloop庫用法的相關(guān)資料,需要的朋友可以參考下2023-01-01
解決python寫入帶有中文的字符到文件錯(cuò)誤的問題
今天小編就為大家分享一篇解決python寫入帶有中文的字符到文件錯(cuò)誤的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-01-01
python3實(shí)現(xiàn)語音轉(zhuǎn)文字(語音識(shí)別)和文字轉(zhuǎn)語音(語音合成)
這篇文章主要介紹了python3實(shí)現(xiàn)語音轉(zhuǎn)文字(語音識(shí)別)和文字轉(zhuǎn)語音(語音合成),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10

