# 12/4進度紀錄 ## 簡筠方 claire ### 介紹: **1. Label Encoding:** 將字串特徵轉換為整數標籤。 * 適用場景:keyword 是分類變量(例如,類別標籤),並且類別之間沒有特定順序。 * 優點:簡單高效。 * 缺點:模型可能將類別數值解讀為有序數據,對某些模型(如線性模型)可能不合適。 **2. One-Hot Encoding:** 將每個類別轉換為二進制特徵(1 表示存在,0 表示不存在)。 * 適用場景:keyword 有較少的唯一值。 * 優點:避免類別順序問題,對於大多數模型更友好。 * 缺點:若類別過多,可能導致特徵空間過大。 **3. TF-IDF 或 Count Vectorization:** 如果 keyword 是自由文本,可以視為文本特徵,進行 TF-IDF 或詞頻處理。 * 適用場景:keyword 可能包含重要的文本信息,類別數量較多且有語義意圖。 * 優點:考慮詞頻的重要性,對文本模型更友好。 * 缺點:需要更多的處理時間和空間。 *  **4. Porter Stemmer:** 詞幹提取的目的是去掉單詞的詞尾變化,例如時態、複數或比較級,使單詞縮減到它的詞幹形式 去掉詞尾的複數形式和過去式: * 規則:sses → ss,ies → i,s → ''(如果詞幹長度足夠) 範例: "caresses" → "caress" "ponies" → "poni" "cats" → "cat" 處理動詞的時態: * 規則:去掉詞尾的 ed 或 ing,如果去掉後剩下的部分仍然是有效的詞幹。 範例: "feeding" → "feed" "troubled" → "troubl" 處理詞尾的重複字母: * 規則:去掉雙字母詞尾(如 "ll", "ss"),保留一個。 範例: "falling" → "fall" "hopping" → "hop" 處理詞尾的標準化: * 規則:將一些常見的詞尾(例如 "ational", "ness")轉換為標準形式。 範例: "relational" → "relate" "hopefulness" → "hope" ### 分析對象: * text_length: text的字串長度,直接為int * word_count: text中字詞的數量,直接為int * keyword * Label Encoding * One-Hot Encoding * text * 改為全部都小寫、去除http\\...連結、去除@#[] * Porter Stemmer * TF-IDF ### 測試模型 使用XGBoost | | 版本 1 | 版本 2 | 版本 3 | | ----------- | -------------- | ---------------- | ---------------- | | text_length | ○ | ○ | ○ | | text_length | ○ | ○ | ○ | | keyword | Label Encoding | One-Hot Encoding | One-Hot Encoding | | text | x | x | TF-IDF | | public score | 0.63438 | 0.72080 | 0.76953 | ### 困難 * 我真看不懂怎樣才算沒有overfitting ## 陳芊羽 Eileen(lala) * 做了甚麼: * RNN 1. 先將text中的網址、@user、非英文(亂碼等)、stopword去除 2. 利用Tokenizer()依照text中出現的單字建立詞典,將每筆text依照詞典轉換成數字向量(embedding),並用pad_sequences確保向量長度一致 3. 設定model並進行訓練 4. 將test_data的text丟給model,輸出數值以0.7為界分成0.1(threshold),匯出成csv檔 * 困難: * 找不到tensorflow 有install也有出現在目錄,但要import時就是找不到 * 一知半解似懂非懂(?) model那塊的程式是chatgpt提供,儘管有逐句去確認在做甚麼,但對很多東西都缺乏概念(包括資料實際被怎麼處理了、中間變成甚麼樣子跟經過甚麼計算) 那些loss函數、優化器、metrics的選用會對程式造成甚麼影響?選擇的依據又是?在activation跟outpput_dim的選擇上也有相同的疑惑。 * 紀錄: * 可以試著改: loss函數、優化器、metrics activation跟outpput_dim batch_size、validation_split、epochs * 可以嘗試: 對text的字詞型態進行處理 將keyword等其他資料加入訓練(怎麼合併?) ## 游婷安Lulu * 做了甚麼: 1. 將文字中亂碼以及網址去除 2. 刪除stop words,將出現頻率太高的字去除 3. 分別使用TfidfVectorizer 和 CountVectorizer 4. RidgeClassifier - public score * CountVectorizer: 0.79344 * TfidfVectorizer: 0.80324 5. LogisticRegression * 分別使用L1_model, L2_model, 和 Elastic_net_model regularization - public score | | L1_model | L2_model | Elastic_net_model| | --------------- | -------- | -------- | -----------------| | CountVectorizer | 0.79313 | 0.80110 | 0.79865 | | TfidfVectorizer| 0.76739 | 0.80110 | ---- | * 困難: 1.不是很懂如何用圖表呈現overfitting 2.很多model會花很多時間訓練 ## 廖奕皓Howard *做了甚麼: 1. 刪除標點符號、網址、連接詞等無用的東西 2. 改變一些縮寫的詞句,像是btw, lol等 3. 使用TfidVectorizer去將文本轉換成TF-IDF 4. 利用MulinomialNB模組來分析並預測 *困難: 1. 找不到tensorflow和keras_nlp用不了 2. 不會看overfitting *Accuracy:67.67%
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up