介紹
如果你從事數據科學研究有一段時間了,那么pandas, scikit-learn seaborn和matplotlib這些庫你都應該非常的熟悉。
如果您想要擴展您的視野,學習一些更少見但同樣有用的庫。在本文中,我將向您展示一些不太為人所知的但是卻非常好用的python庫。
imbalanced-learn
如果你過去一直在構建一些有監督的機器學習模型,你就會知道目標變量中的類別不平衡可能是一個大問題。這是因為在少數類中沒有足夠的例子來讓算法學習模式。
一個解決方案是創建一些合成樣本,通過使用例如SMOTE(合成少數群體過采樣技術)來增加少數群體類的學習。
幸運的是,imbalance-learn庫將幫助您在任何不平衡數據集上實現這一技術。
您可以通過在終端上執行以下命令來安裝imbalance-learn庫。
- pip install imbalanced-learn
為了演示如何平衡數據集,我們將使用sklearn下載乳腺癌數據集。
- from sklearn.datasets import load_breast_cancer
- import pandas as pddata = load_breast_cancer()
- df = pd.DataFrame(data.data, columns=[data.feature_names])
- df[‘target’] = data[‘target’]
- df.head()
下面看目標變量的分布。
- df.target.value_counts()

數據集確實是均勻分布的,盡管它不是非常不平衡:我們有357名乳腺癌患者和212名健康患者。
我們看看能不能讓它更平衡一點。我們將使用SMOTE對0類進行過采樣。
- from imblearn.over_sampling import SMOTE
- oversample = SMOTE()
- X_oversample, y_oversample = oversample.fit_resample(data.data, data.target)
- pd.Series(y_oversample).value_counts()
如你所見,數據集現在已經完全平衡了。每個類有357個實例。作為我們操作的結果,創建了145個人工實例。
statsmodels
這是另一個很棒的庫,專門用來建立統計模型。我通常用它來擬合線性回歸
它真的很容易使用,你可以馬上得到很多關于模型的信息,比如R2 BIC、AIC、置信度和它們相應的p值。當使用scikit-learn的線性回歸時,這些信息更難以獲取。
讓我們看看如何使用這個庫來適應線性回歸模型。讓我們先下載一個波士頓房價數據集。
- from sklearn.datasets import load_boston
- import pandas as pd
- data = load_boston()
- df = pd.DataFrame(data.data, columns=[data.feature_names])
- df[‘target’] = data[‘target’]
- df.head()

上面是我們的數據集的前五行。有13個特征,我們可以看到一個目標變量是一個連續的數字。這是一個完美的回歸數據集。
現在讓我們使用pip安裝統計模型庫
- pip install statsmodels
現在,我們可以使用以下代碼嘗試將線性回歸模型與我們的數據相匹配。
- import statsmodels.api as sm
- X = sm.add_constant(df.drop(columns=[‘target’])) # adding a constant
- model = sm.OLS(df.target, X).fit()
- predictions = model.predict(X)
- print_model = model.summary()
- print(print_model)

我們剛剛將一個線性回歸模型擬合到這個數據集上,并打印出了該模型的詳細摘要。您可以很容易地閱讀所有重要信息,在必要時重新調整功能,并重新運行模型。
我發現與scikit-learn版本相比,使用statsmodels進行回歸更容易,因為我需要的所有信息都在這個簡短的報告中。
missingno
missingno是另一個有用的庫。它可以幫助您可視化缺失值的分布。
您可能已經習慣使用isnull()函數檢查pandas中的缺失值。這可以幫助您獲取每列缺失值的數量,但不能幫助您確定它們的位置。這正是missingo變得有用的時候。
你可以使用下面的命令安裝庫:
- pip install missingno
現在,讓我們演示如何使用missingo來可視化缺失的數據。為了做到這一點,我們將從Kaggle下載預期壽命數據集。
然后可以使用read_csv()函數加載數據集,然后從missingno庫調用matrix()函數。
- import pandas as pd
- import missingno as msno
- df = pd.read_csv(‘Life Expectancy Data.csv’)
- msno.matrix(df)

可以看到缺失值的位置。如果懷疑丟失的值位于某個特定位置或遵循某個特定模式,那么它將非常有用。
總結
以上三個庫非常的有用,通過使用它們可以簡化我們的操作,提高我們的工作效率。
原文鏈接:https://www.toutiao.com/i6996832135965557260/