提高模型性能:自己製作特徵,製作多個模型
特徵選擇:
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("結束............................")