1. 程式人生 > >簡短NLP入門完整程式碼附詳解附資料集

簡短NLP入門完整程式碼附詳解附資料集

資料集: https://pan.baidu.com/s/13IMDPMz0rf8kM1JAea53uQ
密碼: y6m4
資料集炒雞炒雞大TQT~~~
程式碼中涉及的具體的類或函式在對應的其他分支部落格下諒解~
{第一次用markdown寫程式碼塊,排版不是很好,會越來越好~}

# -*- coding: utf-8 -*-
print("開始..............")

import pandas as pd
from sklearn.linear_model import LogisticRegression
from sklearn.feature_extraction.text import CountVectorizer

df_train = pd.read_csv('./train_set.csv'
) df_test = pd.read_csv('./test_set.csv') df_train.drop(columns=['article','id'],inplace=True) #pandas的drop函式:刪除表中的某一行或者某一列,當inplace手動設為True時(預設為false),改變原有的df中的資料,原資料直接就被替換。 df_test.drop(columns=['article'],inplace=True) vectorizer = CountVectorizer(ngram_range=(1,2),min_df=3,max_df=0.9,max_features=100000
) #文字特徵提取方法:CountVectorizer,它只考慮每種詞彙在該訓練文字中出現的頻。 #CountVectorizer演算法是將文字向量轉換成稀疏表示數值向量(字元頻率向量)。 #該數值向量可以傳遞給其他演算法,譬如LDA 。在fitting過程中,CountVectorizer將會把頻率高的單詞排在前面。可選引數minDF表示文字中必須出現的次數(具體分析見另一篇部落格啦~) vectorizer.fit(df_train['word_seg']) # 先擬合訓練集'word_seg'列的資料 x_train = vectorizer.transform(df_train['word_seg'
]) # 再標準化訓練集'word_seg'列資料,tranform()的作用是通過找中心和縮放等實現標準化 x_test = vectorizer.transform(df_test['word_seg']) # 標準化測試集'word_seg'列資料 y_train = df_train['class']-1 #將訓練集y 標籤為'class'列的資料全部減一 lg = LogisticRegression(C=4,dual=True) # 使用LogisticRegression每次指定一個正則化係數C。 lg.fit(x_train,y_train) #Fit the model according to the given training data y_test = lg.predict(x_test) #根據輸入的測試集x輸出預測的y值 df_test['class'] = y_test.tolist() #將預測結果轉化為list賦值給測試集中'class'一列 df_test['class'] = df_test['class']+1 #該列每一個值加一 df_result = df_test.loc[:,['id','class']] #選取'id','class'兩列作為結果集 df_result.to_csv('./result.csv',index=False) #儲存結果 print("完成...............")

———-我是分隔線
如果碰到如下報錯這裡寫圖片描述
可嘗試這麼改,資料集一次讀取太大了,限制下一次的讀取最大值
這裡寫圖片描述