daguansummary

1.參賽指導
1.1 背景

這個比賽是文本分類比賽,比傳統的短文本(300詞)分類難,現在是長文本(3000詞)分類。

1.2 監督學習進行分類的基本過程 (假設有一個學習模型f供你使用)

原始數據(一段原始文本)→數據預處理(處理後的文本)→特徵工程(Features)→輸入(模型f)→輸出(類別)

數據預處理:表情、符號會影響後續的處理,所以去掉;

特徵工程:生成向量=feature;(是機器學習中最重要的部分,深度學習也是完成這一步。有個說法是:特徵決定了機器學習的上限,而機器學習算法只是爲了逼近這個上限)

模型的輸入輸出:都是模型所規定好的特徵空間和類別空間。

注:字和詞:單個詞才能表達一個完整的意思,比如“垃圾”,分開一個字意思,就不能夠表達組合的意思(有些情況是可以的)。

1.3 脫敏數據

圖1 脫敏數據(每個數字代表一個字、詞)
上圖有標的數據用於訓練,測試集沒有數據,提交了纔回有成績。

1.4 如何提高模型的性能

(1)數據預處理:當所給的數據不全,其中可能也有錯誤的數據;(本源問題)(但可以數據增強,來增加數據來提高效果)

(2)特徵工程:技巧性,需要積累經驗,比如區分人的話,用人臉特徵就比身高特徵好太多了; (是決定模型好壞的關鍵)

(3)機器學習算法:不同的算法適合不同的問題,如這個簡單的分類問題,邏輯迴歸比其他複雜的模型要好;

(4)模型集成

https://www.jianshu.com/p/a565f9512a17

baseline

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