「達觀杯」文本分類--baseline

結合tfidf權重,對「達觀杯」提供的文本,進行文本分類,做爲baseline,後續改進均基於此。html

1.比賽地址及數據來源

"達觀杯"文本智能挑戰賽算法

2.代碼及解析

# -*- coding: utf-8 -*-

""" @簡介:tfidf特徵/ SVM模型 @成績: 0.77 """
#導入所須要的軟件包
import pandas as pd from sklearn.svm import LinearSVC from sklearn.feature_extraction.text import TfidfVectorizer print("開始...............") #==================================================================================================================== # @代碼功能簡介:從硬盤上讀取已下載好的數據,並進行簡單處理 # @知識點定位:數據預處理 #====================================================================================================================
df_train = pd.read_csv('./data/train_set.csv')  # 數據讀取
df_test = pd.read_csv('./data/test_set.csv') # 觀察數據,原始數據包含id、article(原文)列、word_seg(分詞列)、class(類別標籤)
df_train.drop(columns=['article', 'id'], inplace=True) # drop刪除列
df_test.drop(columns=['article'], inplace=True) #========================================================== # @代碼功能簡介:將數據集中的字符文本轉換成數字向量,以便計算機可以進行處理(一段文字 ---> 一個向量) # @知識點定位:特徵工程 #==========================================================
vectorizer = TfidfVectorizer(ngram_range=(1, 2), min_df=3, max_df=0.9) ''' ngram_range=(1, 2) : 詞組長度爲1和2 min_df : 忽略出現頻率小於3的詞 max_df : 忽略在百分之九十以上的文本中出現過的詞 ''' vectorizer.fit(df_train['word_seg'])  # 構造tfidf矩陣
x_train = vectorizer.transform(df_train['word_seg'])  # 構造訓練集的tfidf矩陣
x_test = vectorizer.transform(df_test['word_seg'])  # 構造測試的tfidf矩陣
 y_train = df_train['class']-1 #訓練集的類別標籤(減1方便計算)

#========================================================== # @代碼功能簡介:訓練一個分類器 # @知識點定位:傳統監督學習算法之線性邏輯迴歸模型 #==========================================================
 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('./results/beginner.csv', index=False) print("完成...............")

3.問題修復

因爲提供的數據集較大,通常運行時間再10到15分鐘之間,基礎電腦配置在4核8G的樣子(越消耗內存在6.2G),所以,通常可能會遇到內存溢出的錯誤。學習

 

可限制每次讀取的數據量,具體解決辦法以下:測試

 

 固然,你也能夠換一個配置更高的電腦。spa

相關文章
相關標籤/搜索