当前位置: 首页 > 面试题库 >

带有索引的Scikit学习train_test_split

林运浩
2023-03-14
问题内容

使用train_test_split()时如何获取数据的原始索引?

我所拥有的是以下

from sklearn.cross_validation import train_test_split
import numpy as np
data = np.reshape(np.randn(20),(10,2)) # 10 training examples
labels = np.random.randint(2, size=10) # 10 labels
x1, x2, y1, y2 = train_test_split(data, labels, size=0.2)

但这并没有给出原始数据的索引。一种解决方法是将索引添加到数据(例如data = [(i, d) for i, d in enumerate(data)]),然后将其传递到内部train_test_split,然后再次扩展。有没有更清洁的解决方案?


问题答案:

Scikit learning在Pandas上的表现非常好,因此我建议您使用它。这是一个例子:

In [1]: 
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
data = np.reshape(np.random.randn(20),(10,2)) # 10 training examples
labels = np.random.randint(2, size=10) # 10 labels

In [2]: # Giving columns in X a name
X = pd.DataFrame(data, columns=['Column_1', 'Column_2'])
y = pd.Series(labels)

In [3]:
X_train, X_test, y_train, y_test = train_test_split(X, y, 
                                                    test_size=0.2, 
                                                    random_state=0)

In [4]: X_test
Out[4]:

     Column_1    Column_2
2   -1.39       -1.86
8    0.48       -0.81
4   -0.10       -1.83

In [5]: y_test
Out[5]:

2    1
8    1
4    1
dtype: int32

您可以直接在DataFrame / Series上调用任何scikit函数,它将起作用。

假设您要进行LogisticRegression,以下是一种以一种不错的方式检索系数的方法:

In [6]: 
from sklearn.linear_model import LogisticRegression

model = LogisticRegression()
model = model.fit(X_train, y_train)

# Retrieve coefficients: index is the feature name (['Column_1', 'Column_2'] here)
df_coefs = pd.DataFrame(model.coef_[0], index=X.columns, columns = ['Coefficient'])
df_coefs
Out[6]:
            Coefficient
Column_1    0.076987
Column_2    -0.352463


 类似资料:
  • 从sklearn加载流行数字数据集。数据集模块,并将其分配给可变数字。 分割数字。将数据分为两组,分别命名为X_train和X_test。还有,分割数字。目标分为两组Y_训练和Y_测试。 提示:使用sklearn中的训练测试分割方法。模型选择;将随机_状态设置为30;并进行分层抽样。使用默认参数,从X_序列集和Y_序列标签构建SVM分类器。将模型命名为svm_clf。 在测试数据集上评估模型的准确

  • 本文向大家介绍基于Python和Scikit-Learn的机器学习探索,包括了基于Python和Scikit-Learn的机器学习探索的使用技巧和注意事项,需要的朋友参考一下 你好,%用户名%! 我叫Alex,我在机器学习和网络图分析(主要是理论)有所涉猎。我同时在为一家俄罗斯移动运营商开发大数据产品。这是我第一次在网上写文章,不喜勿喷。 现在,很多人想开发高效的算法以及参加机器学习的竞赛。所以他

  • 问题内容: 在选择主成分数(k)时,我们选择k为最小值,以便保留例如99%的方差。 但是,在Python Scikit学习中,我不是100%确定等于“保留了99%的方差”吗?谁能启发?谢谢。 Python Scikit学习PCA手册在这里 http://scikit- learn.org/stable/modules/generation/sklearn.decomposition.PCA.htm

  • 先决条件 Numpy, Scipy IPython matplotlib scikit-learn (http://scikit-learn.org) 警告:从版本0.9(在2011年9月发布)起,scikit-learn导入路径从scikits.learn 改为 sklearn 3.5.1 加载样例数据集 首先,我们将加载一些数据来玩玩。我们将使用的数据是知名的非常简单的花数据鸢尾花数据集。 我

  • 问题内容: 我正在尝试为我的大型不平衡数据集创建N个平衡随机子样本。有没有一种方法可以简单地通过scikit-learn / pandas来做到这一点,或者我必须自己实现它?任何指向此功能的代码的指针? 这些子样本应该是随机的,并且在我将每个样本送入非常大的分类器集合中的各个分类器时可以重叠。 在Weka中,有一个名为spreadsubsample的工具,在sklearn中是否有等效工具? htt

  • 我正在使用scikit-learn 0.14的GridSearchCV,但总是得到以下警告: /Library/Frameworks/epd 64 . framework/Versions/7.2/lib/python 2.7/site-packages/sk learn/grid _ search . py:706:deprecation warning:忽略GridSearchCV的附加参数!