泰坦尼克号管道中的 ValueError

Posted

技术标签:

【中文标题】泰坦尼克号管道中的 ValueError【英文标题】:ValueError in Titanic pipeline 【发布时间】:2020-10-25 23:22:26 【问题描述】:

我正在开发我的第一个管道,但我无法让它在 Titanic 数据集上工作。有人可以解释一下我做错了什么以及如何解决吗?

我从数据框中删除了一些特征,并使用 get dummies 来转换分类特征。

titanic_dummies = titanic.copy()
titanic_dummies = titanic_dummies.drop([ 'Name', 'Ticket','Cabin', "Fare"], axis=1)
titanic_dummies = pd.get_dummies(titanic_dummies, drop_first=True)

然后我尝试运行这个管道

X=titanic_dummies.drop(['Survived'], axis=1)
y=titanic_dummies['Survived']


 ****#setup the pipeline steps****
steps = [('scaler', StandardScaler()),
         ('imputation', SimpleImputer(missing_values='NaN', strategy='most_frequent')),
         ('logreg', LogisticRegression())]
          
*# Create the pipeline: pipeline*
pipeline = Pipeline(steps)

#Define hyperparameters and range of Grid Search
parameters = "logreg__C": np.logspace(-5, 8, 15),
              "logreg__penalty": ['l1', 'l2']

*# Create train and test sets*
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

*# run cross validation*
cv = GridSearchCV(pipeline, param_grid = parameters, cv=3)

*# Fit the pipeline to the training set:* 
cv.fit(X_train, y_train)

*# Predict the labels of the test set*
y_pred = cv.predict(X_test)

*# Compute and print metrics*
print("Accuracy: ".format(cv.score(X_test, y_test)))
print(classification_report(y_test, y_pred))
print("Tuned Model Parameters: ".format(cv.best_params_))

这是我得到的错误

ValueError: Input contains NaN, infinity or a value too large for dtype('float64').

从所附图片中,您可能可以看出我的值的大小不是问题。也许我的估算有问题?

我真的很想听听您对如何解决此问题的想法。

【问题讨论】:

【参考方案1】:

你可以改变

missing_values = "NaN"

missing_values = np.nan

这可能有效。

【讨论】:

【参考方案2】:

numpy 数组中的 NaN 表示为 np.NaN 而不是字符串类型 "NaN"

修复

('imputation', SimpleImputer(missing_values=np.NaN, strategy='most_frequent'))

【讨论】:

【参考方案3】:

如果您有任何不需要的记录,就会发生这种情况。我的意思是,即使 dtypes 说 float,Nans 对您的程序来说也是一个问题。你有几个选择:

    删除此类记录 用平均值/中值填充它们(我不推荐它用于泰坦尼克号) 用默认值替换它们

【讨论】:

我建议您查看here 以获取代码方面的解决方案。

以上是关于泰坦尼克号管道中的 ValueError的主要内容,如果未能解决你的问题,请参考以下文章

Kaggle实战入门:泰坦尼克号生还预测(进阶版)

泰坦尼克号问题

#yyds干货盘点#数据分析实际案例之:pandas在泰坦尼特号乘客数据中的使用

#yyds干货盘点#数据分析实际案例之:pandas在泰坦尼特号乘客数据中的使用

泰坦尼克号之灾分析

R语言使用特征工程泰坦尼克号数据分析应用案例