2.9学习笔记(西瓜书1)

提高模型性能:自己制作特征,制作多个模型
特征选择:
1.跑一遍随机森林得到特征重要性,删掉重要性低的
2.计算每个特征和label的相关性

1.加载数据,数值化求特征
2.svm算法学习一个模型
3.利用模型对新数据做分类预测

print("开始...................")

import pandas as pd
from sklearn.svm import LinearSVC '''线性svm分类器'''
from sklearn.feature_extraction.text import TfidfVectorizer '''要构造文本词频特征的一个函数接口'''

df_train=pd.read_csv('./train_set.csv')
df_test=pd.read_csv('./test_set.csv')
#把下载的数据加载进来
df_train.drop(columns=['article','id'],inplace=True)
df_test.drop(columns=['article'],inplace=True)
#删掉article和id列


vectorizer=TfidfVectorizer(ngram_range=(1,2),min_df=3,max_df=0.9)
#定义一个TfidVectorizer类
vectorizer.fit(df_train['word_seg'])
#调用这个方法,可以学习到这个训练集的每个样本所对应的的一个向量
x_train=vectorizer.transform(df_train['word_seg'])
x_test=vectorizer.transform(df_test['word_seg'])
y_train=df_train['class']-1	#让label从0开始计数
#fit:为转换做准备
#transform:文本转换成向量


#训练一个SVM分类器
classifier=LinearSVC()	#初始化一个分类器
classifier.fit(x_train,y_train) #学习过程

#用学习好的分类器预测测试集样本
y_test=classifier.predict(x_test)

#将预测结果保存到本地
df_test['class']=y_test.tolist()
df_test['class']=df_test['class']+1
df_result=df_test.loc[:,['id','class']]
df_result.to_csv('./result.csv',index=False)

print("结束............................")
发布了5 篇原创文章 · 获赞 2 · 访问量 2672

猜你喜欢

转载自blog.csdn.net/weixin_43621813/article/details/104257373