分類模型_數據整理

1- make_classification

構造虛擬數據集,主要通過n_samples,n_features, n_classes,weights來進行構建,後期可能會使用到n_redunant和n_informative等進行特徵之間相關度的分析。

X,y=datasets.make_classification(
    n_samples=2000,
    n_features=10,#每個樣本具有10個特徵
    n_informative=4,
    n_redundant=1,
    n_classes=2,
    n_clusters_per_class=1,#每個類別有幾個簇構成
    weights=[0.1,0.9],#樣本比例
    flip_y=0.1,#應該是造成誤差(引入噪聲)的意思,樣本之間標籤交換
    random_state=2019
)
df_all=pd.DataFrame(X)
df_all["y"]=y
#對數據做PCA降維
pca=PCA(n_components=2)
pca.fit(X)
X_pca=pca.transform(X)

df_X=pd.DataFrame(columns=["pca_a","pca_b","y"])
df_X.pca_a=X_pca[:,0]
df_X.pca_b=X_pca[:,1]
df_X.y=y
print(type(X_pca))

print(X.shape,"  --> ",X_pca.shape)
sns.lmplot(x="pca_a",y="pca_b",data=df_X,hue="y",fit_reg=False,markers=["o","x"],size=8,aspect=1.5,legend=True)

2- cnews

爲10類中文文本數據集,在數據送入神經網絡之前,需要將文本數據轉爲tensor格式。可以使用onehot形式,但是矩陣大小爲n_word*n_review,如果使用最長句子長度,則爲n_max_len*n_review。只選取前10000的詞頻排序的詞,將句子對應的單詞轉爲數字,同時n_max_length歸一化,少於該長度則做補全,多於該長度,則做截斷。使用字級別的,省去了分詞以及OOV的問題。參考代碼沒有做stopwords的處理,依然取得了比較好的效果,後期詳細學習。

3- imdb

imdb爲英文數據,數據集中最長的句子長度爲2494,長度中位數爲178,衆數爲132,但最後選取歸一化長度爲256,經測試,256高於178的acc。在構建好word_to_id之後,需要注意添加"<PAD>","<UNK>"。

具體代碼在 https://github.com/mathCrazyy/NLP_task.git  

cnews目前代碼有問題,待修正。

參考:

https://github.com/gaussic/text-classification-cnn-rnn

https://www.imooc.com/article/48072

待嘗試部分:

特徵選擇:  https://towardsdatascience.com/a-feature-selection-tool-for-machine-learning-in-python-b64dd23710f0

 

 


 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章