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("結束............................")
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章