标签: sklearn-pandas

pandas 返回具有多个“NA”值的行索引

我的代码:

import pandas as pd
from sklearn.preprocessing import LabelEncoder
column_names = ["age","workclass","fnlwgt","education","education-num","marital-status","occupation","relationship","race","sex","capital-gain","capital-loss","hrs-per-week","native-country","income"]

adult_train = pd.read_csv("adult.data",header=None,sep=',\s',na_values=["?"])
adult_train.columns=column_names
adult_train.fillna('NA',inplace=True)
Run Code Online (Sandbox Code Playgroud)

我想要在不止一列中具有值“NA”的行的索引。是否有内置方法或者我必须逐行迭代并检查每列的值?这是数据的快照:数据

我想要像 398,409 这样的行的索引(B 和 G 列缺少值)而不是像 394 这样的行的索引(仅在 N 列缺少值)

python python-2.7 python-3.x pandas sklearn-pandas

0
推荐指数
1
解决办法
3291
查看次数

sklearn TimeSeriesSplit 错误:KeyError: '[ 0 1 2 ...] 不在索引中'

我想在以下数据帧上使用来自 sklearn 的 TimeSeriesSplit 来预测总和: 数据框

因此,为了准备 X 和 y,我执行以下操作:

X = df.drop(['sum'],axis=1)
y = df['sum']
Run Code Online (Sandbox Code Playgroud)

然后将这两个喂给:

for train_index, test_index in tscv.split(X):
X_train01, X_test01 = X[train_index], X[test_index]
y_train01, y_test01 = y[train_index], y[test_index]
Run Code Online (Sandbox Code Playgroud)

通过这样做,我收到以下错误:

KeyError: '[ 0  1  2 ...] not in index'
Run Code Online (Sandbox Code Playgroud)

这里 X 是一个数据帧,显然这会导致错误,因为如果我将 X 转换为数组,如下所示:

X = X.values
Run Code Online (Sandbox Code Playgroud)

然后它会起作用。但是,为了以后对模型的评估,我需要 X 作为数据框。有什么方法可以将 X 保留为数据帧并将其提供给 tscv 而不将其转换为数组?

time-series pandas scikit-learn sklearn-pandas train-test-split

0
推荐指数
1
解决办法
1038
查看次数

sklearn线性回归系数具有单值输出

我正在使用数据集来查看薪水与大学GPA之间的关系.我正在使用sklearn线性回归模型.我认为系数应该是截距和coff.相应特征的价值.但该模型给出了单一价值.

from sklearn.cross_validation import train_test_split
from sklearn.linear_model import LinearRegression

# Use only one feature : CollegeGPA
labour_data_gpa = labour_data[['collegeGPA']]

# salary as a dependent variable
labour_data_salary = labour_data[['Salary']]

# Split the data into training/testing sets
gpa_train, gpa_test, salary_train, salary_test = train_test_split(labour_data_gpa, labour_data_salary)

# Create linear regression object
 regression = LinearRegression()

# Train the model using the training sets (first parameter is x )
 regression.fit(gpa_train, salary_train)

#coefficients 
regression.coef_

The output is : Out[12]: array([[ 3235.66359637]])
Run Code Online (Sandbox Code Playgroud)

python pandas scikit-learn sklearn-pandas

-1
推荐指数
1
解决办法
1610
查看次数

MultiLabelBinarizer 在逆变换时混合数据

我正在使用sklearnmultilabelbinarizer()来训练我的机器学习中的多个列,我用它来训练我的模型。

使用它后,我注意到它在逆变换时混淆了我的数据。我创建了一组随机值的测试集,在其中拟合数据、对其进行转换,然后inverse_transform将数据恢复为原始数据。

我进行了一个简单的测试jupyter笔记本上进行了一个简单的测试以显示错误:

inverse_transformed第 1 行的值中,它混淆了州和月份。

jupyter笔记本代码

首先,我的使用方式是否有错误multilabelbinarizer?有没有不同的方法来实现相同的输出?

编辑: 感谢@Nicolas M. 帮助我解决我的问题。我最终像这样解决了这个问题。

请原谅我的粗略解释,但结果比我最初想象的要复杂。我改用 thelabel_binarizer而不是multi_label_binarizer因为它

我最终腌制了label_binarizer defaultdict以便我可以加载它并在我的机器学习项目的不同模块中使用它。

一件可能不简单的事情是我向为每一列制作的数据帧添加新标题。它采用列名+列号的形式。我这样做是因为我需要对数据进行逆变换。为此,我搜索了包含原始列名称的列,该列名称将较大的数据帧分隔成各个列块。

这里是我使用的一些变量及其含义供参考:
lb_dict- 存储不同标签二值化器的默认字典。
binarize_df- 存储二进制数据的数据框。
binarized_label- label 将列中的一个标签二值化。
header- 创建一个新的标题形式:列名+数字列。

inverse_df- 存储逆变换数据的数据帧。
one_label_list- 查找具有原始列标签的列名称列表。
one_label_df- 创建一个新的数据框,仅存储一列的二值化数据。
single_label- 被反向转换成一列的二值化数据。

在此代码中,数据是我传递给函数的数据帧。

lb_dict = defaultdict(LabelBinarizer)
# create a place holder dataframe to join new binarized data to
binarize_df = pd.DataFrame(['x'] …
Run Code Online (Sandbox Code Playgroud)

python machine-learning pandas multilabel-classification sklearn-pandas

-3
推荐指数
1
解决办法
1097
查看次数