中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在Kaggle上打比賽

發布時間:2021-12-27 10:58:08 來源:億速云 閱讀:188 作者:iii 欄目:大數據

這篇文章主要講解了“怎么在Kaggle上打比賽”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么在Kaggle上打比賽”吧!

引言

Kaggle是最著名的機器學習競賽網站。Kaggle競賽由一個數據集組成,該數據集可以從網站上獲得,需要使用機器、深度學習或其他數據科學技術來解決問題。一旦你發現了一個解決方案,你就可以把你的模型結果上傳到網站上,然后網站根據你的結果對你進行排名。如果你的結果可以擊敗其他參賽選手,那么你可能獲得現金獎勵。

怎么在Kaggle上打比賽

Kaggle是一個磨練您的機器學習和數據科學技能的好地方,您可以將自己與他人進行比較,并學習新的技術。

推特數據集

Kaggle最新的一項競賽提供了一個數據集,包含推文以及一個告訴我們這些推文是否真的是關于災難的標簽。該比賽的排行榜上有近3000名參賽者,最高獎金為1萬美元。

如果你還沒有Kaggle賬戶,你可以先免費創建一個。

如果你從比賽頁面選擇“下載全部”,你會得到一個包含三個CSV文件的zip文件:

怎么在Kaggle上打比賽

第一個數據文件train.csv包含一組特性及其對應的用于培訓目的的目標標簽。該數據集由以下屬性組成:

  • Id: tweet的數字標識符。當我們將我們的預測上傳到排行榜時,這將是非常重要的。

  • 關鍵字:推文中的一個關鍵字,可能在某些情況下沒有。

  • 位置:發送推文的位置,這也可能不存在。

  • 文本:推文的全文。

  • 目標:這是我們試圖預測的標簽。如果這條推文真的是關于一場災難,它將是1,如果不是,它將是0。

讓我們并進一步了解這個。在下面的代碼中,您將注意到我使用了一個set_option  命令。這個來自Pandas庫的命令允許您控制dataframe結果顯示的格式。我在這里使用這個命令,以確保顯示文本列的全部內容,這使我的結果和分析更容易查看:

import pandas as pdpd.set_option('display.max_colwidth',  -1)train_data = pd.read_csv('train.csv')train_data.head()
怎么在Kaggle上打比賽

第二個數據文件test.csv是測試集,只包含特征,而沒有標簽。對于這個數據集,我們將預測目標標簽并使用結果在排行榜上獲得一個位置。

test_data = pd.read_csv('test.csv')test_data.head()
怎么在Kaggle上打比賽

第三個文件sample_submission是示例,展示了提交文件的外觀。這個文件將包含test.csv文件中的id列和我們用模型預測的目標。一旦我們創建了這個文件,我們將提交給網站,并獲得一個位置的排行榜。

sample_submission =  pd.read_csv('sample_submission.csv')sample_submission.head()
怎么在Kaggle上打比賽

數據清理

對于任何機器學習任務,在我們可以訓練一個模型之前,我們必須執行一些數據清理和預處理。這在處理文本數據時尤為重要。

為了簡化我們的第一個模型,并且由于這些列中有許多缺失的數據,我們將刪除位置和關鍵字特性,只使用來自tweet的實際文本進行訓練。我們還將刪除id列,因為這對訓練模型沒有用處。

train_data = train_data.drop(['keyword', 'location', 'id'],  axis=1)train_data.head()

我們的數據集變成這樣:

怎么在Kaggle上打比賽

文本常常包含許多特殊字符,這些字符對于機器學習算法來說不一定有意義。因此,我要采取的第一步是刪除這些。我也把所有的單詞都小寫了。

import redef  clean_text(df, text_field):    df[text_field] =  df[text_field].str.lower()    df[text_field] =  df[text_field].apply(lambda elem: re.sub(r"(@[A-Za-z0-9]+)|([^0-9A- Za-z \t])|(\w+:\/\/\S+)|^rt|http.+?", "", elem))      return  dfdata_clean = clean_text(train_data, "text")data_clean.head()
怎么在Kaggle上打比賽

另一個有用的文本清理過程是刪除停止字。停止詞是非常常用的詞,通常傳達很少的意思。在英語中,這些詞包括“the”、“it”和“as”。如果我們把這些單詞留在文本中,它們會產生很多噪音,這將使算法更難學習。

NLTK是用于處理文本數據的python庫和工具的集合。除了處理工具之外,NLTK還擁有大量的文本語料庫和詞匯資源,其中包括各種語言中的所有停止詞。我們將使用這個庫從數據集中刪除停止字。

可以通過pip安裝NLTK庫。安裝之后,需要導入庫文集,然后下載stopwords文件:

import nltk.corpusnltk.download('stopwords')

一旦這一步完成,你可以閱讀停止詞,并使用它來刪除他們的推文。

from nltk.corpus import stopwordsstop =  stopwords.words('english')data_clean['text'] =  data_clean['text'].apply(lambda x: ' '.join([word for word in  x.split() if word not in (stop)]))data_clean.head()
怎么在Kaggle上打比賽

數據預處理

一旦清理好數據,就需要進一步的預處理,為機器學習算法的使用做好準備。

所有的機器學習算法都使用數學計算來映射特征(在我們的例子中是文本或單詞)和目標變量中的模式。因此,在對機器學習模型進行訓練之前,必須將文本轉換為數字表示,以便進行這些計算。

這種類型的預處理有很多方法,但是在這個例子中,我將使用兩個來自scikit-learn庫的方法。

這個過程的第一步是將數據分割成標記或單個單詞,計算每個單詞在文本中出現的頻率,然后將這些計數表示為一個稀疏矩陣。CountVectoriser函數可以實現這一點。

下一步是對CountVectoriser生成的字數進行加權。應用這種加權的目的是縮小文本中出現頻率非常高的單詞的影響,以便在模型訓練中認為出現頻率較低、可能信息量較大的單詞很重要。TfidTransformer可以執行這個功能。

機器學習流程

讓我們把所有這些預處理和模型擬合一起放到scikit-learn流程中,看看模型是如何執行的。對于第一次嘗試,我使用線性支持向量機分類器(SGDClassifier),因為這通常被認為是最好的文本分類算法之一。

from sklearn.model_selection import train_test_splitX_train, X_test, y_train, y_test =  train_test_split(data_clean['text'],data_clean['target'],random_state  = 0)from sklearn.feature_extraction.text import TfidfVectorizerfrom  sklearn.pipeline import Pipelinefrom sklearn.feature_extraction.text  import CountVectorizerfrom sklearn.feature_extraction.text import  TfidfTransformerfrom sklearn.linear_model import  SGDClassifierpipeline_sgd = Pipeline([    ('vect',  CountVectorizer()),    ('tfidf',  TfidfTransformer()),    ('nb',  SGDClassifier()),])model = pipeline_sgd.fit(X_train, y_train)

讓我們使用這個訓練好的模型來預測我們的測試數據,并看看這個模型是如何執行的。

from sklearn.metrics import classification_reporty_predict =  model.predict(X_test)print(classification_report(y_test, y_predict))
怎么在Kaggle上打比賽

對于第一次嘗試,模型執行得相當好。

提交成績

現在讓我們看看這個模型在競爭測試數據集上的表現,以及我們在排行榜上的排名。

首先,我們需要清除測試文件中的文本,并使用模型進行預測。下面的代碼獲取測試數據的副本,并執行我們應用于培訓數據的相同清理。輸出如下面的代碼所示。

submission_test_clean = test_data.copy()submission_test_clean =  clean_text(submission_test_clean,  "text")submission_test_clean['text'] =  submission_test_clean['text'].apply(lambda x: ' '.join([word for word  in x.split() if word not in (stop)]))submission_test_clean =  submission_test_clean['text']submission_test_clean.head()
怎么在Kaggle上打比賽

接下來,我們使用模型創建預測。

submission_test_pred = model.predict(submission_test_clean)

為了創建一個提交,我們需要構造一個dataframe,它只包含來自測試集的id和我們的預測。

id_col = test_data['id']submission_df_1 = pd.DataFrame({                   "id": id_col,                   "target":  submission_test_pred})submission_df_1.head()
怎么在Kaggle上打比賽

最后,我們將其保存為CSV文件。必須包含index=False,否則索引將被保存為文件中的一列,您的提交將被拒絕。

submission_df_1.to_csv('submission_1.csv', index=False)

一旦我們有了CSV文件,我們就可以返回比賽頁面并選擇提交預測按鈕。這將打開一個表單,您可以上傳CSV文件。添加一些關于該方法的注釋是一個好主意,這樣您就有了以前提交嘗試的記錄。

怎么在Kaggle上打比賽

提交文件后,您將看到如下結果:

怎么在Kaggle上打比賽

現在我們有一個成功的提交!

怎么在Kaggle上打比賽

這個模型在排行榜上給了我0.78分,排名2371。顯然還有一些改進的空間,但現在我已經有了一個未來提交的基準。

怎么在Kaggle上打比賽

感謝各位的閱讀,以上就是“怎么在Kaggle上打比賽”的內容了,經過本文的學習后,相信大家對怎么在Kaggle上打比賽這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

沂南县| 论坛| 建昌县| 观塘区| 孝昌县| 靖州| 武清区| 齐齐哈尔市| 临夏市| 固原市| 中西区| 宁乡县| 巩义市| 安国市| 渝北区| 阳高县| 武汉市| 通海县| 华宁县| 怀安县| 北辰区| 绥芬河市| 清新县| 新津县| 喜德县| 民勤县| 清水县| 新和县| 达州市| 茂名市| 蒙阴县| 屯留县| 合水县| 上高县| 伊金霍洛旗| 扎兰屯市| 卓资县| 勐海县| 太湖县| 秦皇岛市| 拉萨市|