介绍如果你从事数据科学研究有一段时间了,你应该对pandas、scikit-learnseaborn和matplotlib等库非常熟悉。如果你想扩展你的视野,学习一些不太常见但同样有用的库。在本文中,我将向您展示一些鲜为人知但非常有用的Python库。不平衡学习如果您过去一直在构建一些受监督的机器学习模型,您就会知道目标变量中的类不平衡可能是一个大问题。这是因为少数类中没有足够的示例供算法学习模式。一种解决方案是创建一些合成样本,通过使用例如SMOTE(合成少数过采样技术)。幸运的是,不平衡学习库将帮助您在任何不平衡数据集上实施该技术。您可以通过在终端上执行以下命令来安装不平衡学习库。pipinstallimbalanced-learn为了演示如何平衡数据集,我们将使用sklearn下载乳腺癌数据集。fromsklearn.datasetsimportload_breast_cancerimportpandasasspddata=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类进行过采样。fromimblearn.over_samplingimportSMOTEoversample=SMOTE()X_oversample,y_oversample=oversample.fit_resample(data.data,data.target)pd.Series(y_oversample).value_counts()如您所见,数据集是现在完全平衡。每个类有357个实例。由于我们的行动,创建了145个人工实例。statsmodels这是另一个专门用于构建统计模型的很棒的库。我通常用它来拟合线性回归,它真的很容易使用,您可以立即获得有关模型的大量信息,例如R2BIC、AIC、置信度及其相应的p值。使用scikit-learn的线性回归时,此信息更难获得。让我们看看如何使用这个库来拟合线性回归模型。让我们从下载波士顿房价数据集开始。fromsklearn.datasetsimportload_bostonimportpandasasspddata=load_boston()df=pd.DataFrame(data.data,columns=[data.feature_names])df['target']=data['target']df.head()上面是我们的数据集第一个五行。有13个特征,我们可以看到目标变量是一个连续的数字。这是一个完美的回归数据集。现在让我们使用pippipinstallstatsmodels安装统计建模库我们现在可以尝试使用以下代码将线性回归模型拟合到我们的数据中。importstatsmodels.apiassmX=sm.add_constant(df.drop(columns=['target']))#addingaconstantmodel=sm.OLS(df.target,X).fit()predictions=model.predict(X)print_model=模型。summary()print(print_model)我们刚刚为该数据集拟合了一个线性回归模型,并打印出该模型的详细摘要。您可以轻松阅读所有重要信息,必要时重新调整特征,然后重新运行模型。与scikit-learn版本相比,我发现使用statsmodels进行回归更容易,因为我需要的所有信息都在这份简短的报告中。missingnomissingno是另一个有用的库。它可以帮助您可视化缺失值的分布。您可能习惯于使用isnull()函数检查pandas中的缺失值。这可以帮助您获得每列缺失值的数量,而不是它们所在的位置。这正是missingo变得有用的时候。您可以使用以下命令安装该库:pipinstallmissingno现在,让我们演示如何使用missingo可视化缺失数据。为此,我们将从Kaggle下载预期寿命数据集。然后可以使用read_csv()函数加载数据集,然后调用missingno库中的matrix()函数。importpandasapdimportmissingnoasmsnodf=pd.read_csv('LifeExpectancyData.csv')msno.matrix(df)可以看到缺失值的位置。如果您怀疑缺失值位于特定位置或遵循特定模式,这将很有用。综上所述,以上三个库都非常好用。通过使用它们,我们可以简化操作并提高工作效率。
