任务四:使用Logistic Regression 和 SVM 对数据进行分类并评估

1.对前几部得到的特征进行分类,主要用到sklearn中的Logistic Regression 和 SVM,这两种算法的具体算法这里不再详述了

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cross_validation import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn import svm
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.metrics import f1_score

"""读取数据"""
print("data read begin...")
train_data = pd.read_csv('./new_data/train_set.csv')
test_data = pd.read_csv('./new_data/test_set.csv')
train_data.drop(columns=['article','id'], inplace = True)
test_data.drop(columns=['article'], inplace = True)
print("data read end...")

"""提取特征"""
vectorizer = CountVectorizer(ngram_range=(1, 2), min_df = 3, max_df = 0.9, max_features = 100000)
vectorizer.fit(train_data['word_seg'])
print("training begin...")
X_train = vectorizer.transform(train_data['word_seg'])
X_test = vectorizer.transform(test_data['word_seg'])
Y_train = train_data['class']-1

x_train, x_test, y_train, y_test = train_test_split(X_train, Y_train, test_size=0.25, random_state=33)

"""训练和验证"""
#logisticRegression                                                                                     
lg = LogisticRegression(C = 4.0, dual = False)
lg.fit(x_train, y_train)#训练分类器
y_predict = lg.predict(x_test)
acc_train = float((y_predict==y_test).sum())/(len(y_test))#验证集错误率
print("accuracy of LR:",acc_train)
print(f1_score(y_test, y_predict , average='weighted'))  

#svm
clf = svm.SVC(C=0.6, kernel='rbf', gamma=20, decision_function_shape='ovr')
clf.fit(x_train, y_train)
y_sv = clf.predict(x_test)
ac = float((y_sv == y_test).sum())/(len(y_test))
print("accuracy of SVM:", ac)
print(f1_score(y_test, y_sv , average='weighted'))

最后得到的结果:

(1)Logistic Regression:

(2)SVM:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值