分類演算法(四) SVM

2021-08-20 12:09:47 字數 2390 閱讀 7684

svm 演算法

一種效果比較好的分類演算法,相對來說訓練速度較其他方法可能慢一些

# -*- encoding=utf-8 -*-

from sklearn import svm

from sklearn import neighbors, linear_model

from sklearn import metrics

from sklearn.feature_extraction.text import tfidfvectorizer

from sklearn.*****_bayes import multinomialnb

import jieba

import pyltp

from classification_practice.practice_one.search_count_auto_words import autowordscounter

from statistic.default_string_search import defaultstringsearch as acsearcher

from sklearn.externals import joblib

import pandas as pd

segmentor = pyltp.segmentor()

segmentor.load("d:\\gridsum\\ltpmodel\\cws.model")

def read_files(filename):

x_train =

y_train =

with open(filename,'r',encoding="utf-8") as lines:

for line in lines:

item = line.replace("\n","").strip().split("\t")

sentence = " ".join(jieba.cut(item[2]))

# sentence = " ".join(list(segmentor.segment(item[2])))

return x_train,y_train

# 情感句子分類(篇章情感句子svm訓練,篇章情感title測試)

vect = tfidfvectorizer(min_df=2,max_df=0.8)

v_test,v_useless = read_files("train1.5.1.txt")

vect.fit(v_test)

x_train, y_train = read_files("train1.5.1.txt")

x_train = vect.transform(x_train)

x_test, y_test = read_files("test1.2.0.txt")

x_test = vect.transform(x_test)

c = 1.0 # svm regularization parameter

svm_classifier = svm.svc(kernel='linear', gamma=0.7, c=c)

x_predict = svm_classifier.fit(x_train, y_train).predict(x_test)

print(metrics.classification_report(y_test, x_predict))

joblib.dump(vect, "svm_model/vect1")

joblib.dump(svm_classifier,'svm_model/svm1.model')

# predict

vect = joblib.load("svm_model/vect")

svm_classifier = joblib.load('svm_model/svm.model')

test_file_name = "test1.2.0.txt"

x_test, y_test = read_files(test_file_name)

x_test = vect.transform(x_test)

x_predict = svm_classifier.predict(x_test)

print(test_file_name)

print(metrics.classification_report(y_test, x_predict))

# test

sentence = '寶駿730異響!不知道是第二排座椅響還是車門玻璃想!反正很煩'

x_test2 = vect.transform([" ".join(jieba.cut(sentence))])

x_predict2 = svm_classifier.predict(x_test2)

print(x_predict2)

分類演算法SVM(支援向量機

支援向量機 support vector machine svm 的主要思想是 建立乙個最優決策超平面,使得該平面兩側距離該平面最近的兩類樣本之間的距離最大化,從而對分類問題提供良好的泛化能力。對於乙個多維的樣本集,系統隨機產生乙個超平面並不斷移動,對樣本進行分類,直到訓練樣本中屬於不同類別的樣本點...

ML筆記 分類演算法之SVM

1.svm是什麼?support vector machine。乙個普通的svm就是一條直線,用來完美劃分linearly separable的2類,即2分類。但這有不是一條普通的直線,這是無數條可以分類的直線當中最完美的,因為它喬海在2個類的中間,距離2個類的點都一樣遠。而所謂的support v...

分類演算法之支援向量機(SVM)

一 概念 支援向量機是一類按監督學習方式對資料進行二元分類的廣義線性分類器,如果進行修改之後也是可以用於多類別問題的分類。支援向量機可以分為線性和非線性兩大類。其主要思想為找到空間中的乙個更夠將所有資料樣本劃開的超平面,並且使得樣本集中所有資料到這個超平面的距離最短。其決策邊界是對學習樣本求解的最大...