一、題目分析
數據
數據包含2個csv文件:
train_set.csv:此數據集用於訓練模型,每一行對應一篇文章。
文章分別在“字”和“詞”的級別上做了脫敏處理。共有四列:
第一列是文章的索引(id);
第二列是文章正文在“字”級別上的表示,即字符相隔正文(article);
第三列是在“詞”級別上的表示,即詞語相隔正文(word_seg);
第四列是這篇文章的標注(class)。
注:每一個數字對應一個“字”,或“詞”,或“標點符號”。“字”的編號與“詞”的編號是獨立的!
test_set.csv:此數據用於測試。數據格式同train_set.csv,但不包含class。 注:test_set與train_test中文章id的編號是獨立的。 友情提示:請不要嘗試用excel打開這些文件!由於一篇文章太長,excel可能無法完整地讀入某一行!
train_set.csv中數據如下:
test_set.csv中數據如下:
題目的要求大致上已經明確,就是根據兩個參數把id歸類到不同的類中。
二、問題分析
問題的解決方案大致如下:
三、代碼
1 print("開始........") 2 3 import pandas as pd 4 from sklearn.linear_model import LogisticRegression 5 from sklearn.feature_extraction.text import CountVectorizer 6 7 df_train = pd.read_csv('./train_set.csv') 8 df_test = pd.read_csv('./test_set.csv') 9 df_train.drop(columns=['article','id'],inplace=True) 10 df_test.drop(columns=['article'],inplace=True) 11 12 vectorizer=CountVectorizer(ngram_range=(1,2),min_df=3,max_df=0.9,max_features=100000) 13 vectorizer.fit(df_train['word_seg']) 14 x_train=vectorizer.transform(df_train['word_seg']) 15 x_test=vectorizer.transform(df_test['word_seg']) 16 y_train=df_train['class']-1 17 18 lg=LogisticRegression(C=4,dual=True) 19 lg.fit(x_train,y_train) 20 21 y_test=lg.predict(x_test) 22 23 df_test['class']=y_test.tolist() 24 df_test['class']=df_test['class']+1 25 df_result=df_test.loc[:,['id','class']] 26 df_result.to_csv('./result.csv',index=False) 27 28 print("完成.........")
四、回顧總結
提高模型性能的方法大致上有以下幾種:
1、數據預處理
2、特征工程
3、機器學習算法
4、模型集成
5、數據增強