日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python一年收入_你的年收入过5万了吗?数据科学家的Python模块和包

發(fā)布時間:2023/12/15 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python一年收入_你的年收入过5万了吗?数据科学家的Python模块和包 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

全文共2327字,預計學習時長15分鐘

圖源:unsplash

筆者剛開始學習給數(shù)據(jù)科學編程時,發(fā)現(xiàn)要找到創(chuàng)建模塊和包的簡單解釋以及教程非常困難,尤其是數(shù)據(jù)科學項目方面。

數(shù)據(jù)科學代碼通常是非常線性的。一般情況下,要先從數(shù)據(jù)源提取數(shù)據(jù),應用一系列轉換,然后執(zhí)行分析、計算或訓練模型。但是為了代碼的可讀性、高效性和可重復性,將代碼模塊化并打包很有用。

本文將告訴你如何為數(shù)據(jù)科學和機器學習創(chuàng)建和使用自己的包和模塊。筆者將使用成年人數(shù)據(jù)集,這個數(shù)據(jù)集通常用來建立分類機器學習模型,目標是預測給定成年人的年收入是否超過5萬美元。

模塊的數(shù)據(jù)科學用例

Python模塊僅僅是Python的一組操作,通常是函數(shù)形式,保存在擴展名為.py的文件中??梢詫⒃撐募氲絁upyter notebook、IPython shell或其他模塊中,以便在項目中使用。

嘗試運行一個實例。如下代碼(從CSV文件中讀取)將使用Pandas:

import pandas as pddata =pd.read_csv('adults_data.csv')

data.head()

這個數(shù)據(jù)集包含許多分類特征。如果打算用它來訓練機器學習模型,就需要先執(zhí)行一些預處理。通過分析這些數(shù)據(jù),筆者決定在訓練模型之前,采取以下步驟對數(shù)據(jù)進行預處理。

· 將雇主的單位類型、婚姻狀況、家庭關系、種族和性別進行獨熱編碼。

· 選取最常見的值,將余下的值歸為“其他”,并對結果特征進行獨熱編碼。該操作在最高教育水平、工作類型、原籍國中執(zhí)行,因為它們包含大量特殊的值。

· 縮放剩余數(shù)值。

執(zhí)行這些任務需要編寫大量代碼,這些任務都可能被多次執(zhí)行,為使代碼更具可讀性并易于重用,可以將一系列函數(shù)寫入到一個單獨的文件中,并導入到 notebook(一個模塊)中使用。

圖源:unsplash

編寫模塊

要創(chuàng)建模塊,就需要創(chuàng)建擴展名為.py的新空白文本文件。可以使用普通的文本編輯器,但也有許多人使用集成開發(fā)環(huán)境(Integrated Development Environment, IDE)。

集成開發(fā)環(huán)境為編寫代碼提供了很多附加功能,包括編譯代碼、調試和與Github集成的工具。它有許多不同類型可用,值得自行嘗試,以發(fā)現(xiàn)最適合的一款。筆者個人更喜歡PyCharm。

筆者先創(chuàng)建了新的Python文件用以編寫模塊:

將其命名為preprocessing.py:

在這個文件中編寫第一個預處理函數(shù),并且在Jupyter Notebook中測試導入和使用。

preprocessing.py文件的頂部的代碼如下,并為其添加了一些注釋,理解起來是不是容易多了。

def one_hot_encoder(df,column_list):

"""Takes in adataframe and a list of columns

for pre-processing via one hotencoding"""

df_to_encode = df[column_list]

df = pd.get_dummies(df_to_encode)

return df

將此模塊導入Jupyter Notebook中,只需編寫以下代碼:

import preprocessing as pr

autoreload是IPython的擴展,用起來方便快捷。倘若在導入之前添加了如下代碼,無論在模塊文件中做出了何種更改,都將同步反映在Notebook中。

%load_ext autoreload

%autoreload 2import preprocessing as pr

測試一下,使用它對數(shù)據(jù)進行預處理:

cols = ['workclass','marital-status', 'relationship', 'race', 'gender']one_hot_df =pr.one_hot_encoder(data, cols)

現(xiàn)在,將余下的預處理函數(shù)添加到preprocessing.py 文件中:

def one_hot_encoder(df,column_list):

"""Takes in adataframe and a list of columns

for pre-processing via one hotencoding returns

a dataframe of one hot encodedvalues"""

df_to_encode = df[column_list]

df = pd.get_dummies(df_to_encode)

return df

def reduce_uniques(df, column_threshold_dict):

"""Takes in adataframe and a dictionary consisting

of column name : value countthreshold returns the original

dataframe"""

for key, value incolumn_threshold_dict.items():

counts = df[key].value_counts()

others = set(counts[counts< value].index)

df[key] =df[key].replace(list(others), 'Others')

returns a dataframe of scaledvalues"""

df_to_scale = df[column_list]

x = df_to_scale.values

min_max_scaler =preprocessing.MinMaxScaler()

x_scaled =min_max_scaler.fit_transform(x)

df_to_scale = pd.DataFrame(x_scaled,columns=df_to_scale.columns)

return df_to_scale

如果返回到Notebook,就可以使用所有的函數(shù)來轉換數(shù)據(jù):

import pandas as pd

from sklearn import preprocessing%load_ext autoreload

%autoreload 2import preprocessing as prone_hot_list = ['workclass','marital-status', 'relationship', 'race', 'gender']

reduce_uniques_dict = {'education' : 1000,'occupation' : 3000, 'native-country': 100}

scale_data_list = data.select_dtypes(include=['int64','float64']).columnsone_hot_enc_df = pr.one_hot_encoder(data, one_hot_list)

reduce_uniques_df = pr.reduce_uniques(data, reduce_uniques_dict)

reduce_uniques_df = pr.one_hot_encoder(data, reduce_uniques_dict.keys())

scale_data_df = pr.scale_data(data, scale_data_list)final_data =pd.concat([one_hot_enc_df, reduce_uniques_df, scale_data_df], axis=1)

現(xiàn)在有了一個完全數(shù)值化的數(shù)據(jù)集,可以用來訓練機器學習模型:

轉換列的快照

當進行機器學習項目時,通常需要或有時需要創(chuàng)建幾個相關模塊并將其打包,以便一起安裝使用。

圖源:unsplash

例如,筆者目前在使用的一款針對機器學習模型的谷歌云部署解決方案,名為 AI Platform。此工具要求在機器學習模型中進行打包預處理、訓練和預測步驟,以便上傳并安裝在平臺上,來部署最終模型。

Python包是包含模塊、文件和子目錄的目錄。該目錄需要包含名為__init__.py的文件。此文件意味著應將其包含的目錄視為包,并指定應導入的模塊和函數(shù)。

下一步,為預處理管道模型中的所有步驟創(chuàng)建包。__init__.py 文件的內容如下。

from .preprocessing importone_hot_encoder

from .preprocessing import reduce_uniques

from .preprocessing import scale_data

from .makedata import preprocess_data

同一個包的模塊可以導入到另一個模塊中使用。另一個名為makedata.py的模塊將被添加進目錄中,該模塊使用preprocessing.py模塊執(zhí)行數(shù)據(jù)轉換,然后將最終數(shù)據(jù)集導出為CSV文件,供后續(xù)使用。

import preprocessing as pr

import pandas as pd

def preprocess_data(df, one_hot_list, reduce_uniques_dict, scale_data_list,output_filename):

one_hot_enc_df =pr.one_hot_encoder(data, one_hot_list)

reduce_uniques_df = pr.reduce_uniques(data,reduce_uniques_dict)

reduce_uniques_df =pr.one_hot_encoder(data, reduce_uniques_dict.keys())

scale_data_df = pr.scale_data(data,scale_data_list)

final_data =pd.concat([one_hot_enc_df, reduce_uniques_df, scale_data_df], axis=1)

final_data.to_csv(output_filename)

新目錄如下所示:

現(xiàn)在可以回到Jupyter Notebook,使用這個包來執(zhí)行所有的預處理。代碼已經變得十分簡單干凈:

import pandas as pd%load_extautoreload

%autoreload 2

import preprocessing as prdata = pd.read_csv('adults_data.csv')one_hot_list =['workclass', 'marital-status', 'relationship', 'race', 'gender']

reduce_uniques_dict = {'education' : 1000,'occupation' : 3000, 'native-country': 100}

scale_data_list = data.select_dtypes(include=['int64','float64']).columnspr.preprocess_data(data, one_hot_list, reduce_uniques_dict,scale_data_list,'final_data.csv')

在目前的工作目錄中,將有一個名為final_data.csv的新CSV文件,包含預處理數(shù)據(jù)集?,F(xiàn)在對其重新讀取并檢查,以確保包按預期執(zhí)行。

data_ =pd.read_csv('final_data.csv')

data.head()

本文演示了如何將模塊和包用于數(shù)據(jù)科學和機器學習項目,這樣的代碼更具可讀性和可復制性,你學會了嗎?。

留言點贊關注

我們一起分享AI學習與發(fā)展的干貨

如轉載,請后臺留言,遵守轉載規(guī)范

總結

以上是生活随笔為你收集整理的python一年收入_你的年收入过5万了吗?数据科学家的Python模块和包的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。