python - 处理泰坦尼克号机器学习 train.csv 中的空数据点

标签 python csv machine-learning scikit-learn svm

在泰坦尼克号机器学习项目的 train.csv 数据中,一些乘客的年龄数据丢失,因此 pandas 模块将其填充为“NaN”,并且当将其输入 sklearn 算法时,它不接受它。我尝试了 dataset.fillna('') 但现在它变成了空字符串而不是 float 。请发送帮助。

https://www.kaggle.com/c/titanic/data

import pandas as pd

from sklearn.cross_validation import train_test_split
dataset = pd.read_csv('train.csv')
#dataset = dataset.fillna()
def preprocess(df):
    from sklearn.preprocessing import LabelEncoder
    processed_df = df.copy()
    le = LabelEncoder()
    done = le.fit_transform(processed_df)
    return done
survival = preprocess(dataset.Survived)

data = dataset.drop('Survived',axis= 1)
data = data.drop('PassengerId',axis=1)
data = data.drop('Embarked',axis = 1)
data = data.drop('Cabin',axis = 1)
data = data.drop('Fare',axis = 1)
data = data.drop('Ticket',axis = 1)
data = data.drop('Name',axis=1)

x_train,x_test,y_train,y_test= 
train_test_split(data,survival,test_size=0.25,random_state=0)

from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import make_pipeline
from sklearn import svm
from sklearn.metrics import accuracy_score


pipeline = make_pipeline(StandardScaler(),
                         svm.SVC(kernel='rbf',C=0.1))
pipeline.fit(x_train,y_train)
print(accuracy_score(pipeline.predict(x_test),y_test))

最佳答案

fillna 将 Nan 值替换为您编写的内容,因此如果您编写 '',它将是一个空字符串。只需写:

 dataset.fillna(0)

如果你需要区分0和Nan,你可以尝试将其替换为-1,这就是我们所做的。

关于python - 处理泰坦尼克号机器学习 train.csv 中的空数据点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47941232/

相关文章:

python - Twisted Python 失败 - Scrapy 问题

python - Vim pymode 在异步函数定义上抛出 "invalid syntax"错误

python - 如何将 python csv.DictReader 与二进制文件一起使用? (对于一个babel自定义提取方法)

java - 在java中将数据写入CSV文件时跳过字段中存在的逗号

Python 路径作为字符串

json - 将 map 值组合成一个json?

machine-learning - 机器学习 - 将同一行训练数据映射到多个目标

python - 无法编译keras模型进行多类预测

python - 与 CNN 交叉验证

python - 如何有效地计算 Pandas 时间序列中的滚动唯一计数?