【问题标题】:Cross validation in random forest using anaconda使用 anaconda 在随机森林中进行交叉验证
【发布时间】:2018-10-29 14:39:09
【问题描述】:

我正在使用泰坦尼克号数据集来预测乘客是否幸存,或者没有使用随机森林。这是我的代码:

import numpy as np 
import pandas as pd 
from sklearn.ensemble import RandomForestClassifier
from sklearn import cross_validation
import matplotlib.pyplot as plt
%matplotlib inline

data=pd.read_csv("C:\\Users\\kabala\\Downloads\\Titanic.csv")
data.isnull().any()
data["Age"]=data1["Age"].fillna(data1["Age"].median())
data["PClass"]=data["PClass"].fillna("3rd")
data["PClass"].isnull().any()
data1.isnull().any()
pd.get_dummies(data.Sex)
# choosing the predictive variables 
x=data[["PClass","Age","Sex"]]
# the target variable is y 
y=data["Survived"]
modelrandom=RandomForestClassifier(max_depth=3)
modelrandom=cross_validation.cross_val_score(modelrandom,x,y,cv=5)

但是,我不断收到此错误:

ValueError: could not convert string to float: 'female'

我不明白问题出在哪里,因为我将 Sex 功能更改为假人

谢谢:)

【问题讨论】:

    标签: python scikit-learn anaconda data-analysis cross-validation


    【解决方案1】:

    pd.get_dummies 返回一个数据框,并没有就地执行操作。因此,您确实是在使用 sex 列发送信息。

    所以你需要像X = pd.get_dummies(data[['Sex','PClass','Age']], columns=['Sex','PClass']) 这样的东西,这应该可以解决你的问题。我认为PClass 也将是一个字符串列,您需要使用虚拟变量,因为它填充了'3rd'

    还有一些你调用data.isnull().any() 的地方对底层数据框没有做任何事情。我让它们保持原样,但仅供参考,它们可能没有按照您的意愿行事。

    完整的代码是:

    import numpy as np 
    import pandas as pd 
    from sklearn.ensemble import RandomForestClassifier
    from sklearn import cross_validation
    import matplotlib.pyplot as plt
    %matplotlib inline
    
    data=pd.read_csv("C:\\Users\\kabala\\Downloads\\Titanic.csv")
    data.isnull().any()   <-----Beware this is not doing anything to the data
    data["Age"]=data1["Age"].fillna(data1["Age"].median())
    data["PClass"]=data["PClass"].fillna("3rd")
    data["PClass"].isnull().any()  <-----Beware this is not doing anything to the data
    data1.isnull().any() <-----Beware this is not doing anything to the data
    
    #********Fix for your code*******
    X = pd.get_dummies(data[['Sex','PClass','Age']], columns=['Sex','PClass'])
    
    # choosing the predictive variables 
    # x=data[["PClass","Age","Sex"]]
    # the target variable is y 
    y=data["Survived"]
    modelrandom=RandomForestClassifier(max_depth=3)
    modelrandom=cross_validation.cross_val_score(modelrandom,x,y,cv=5)
    

    【讨论】:

      猜你喜欢
      • 2014-04-16
      • 2018-09-03
      • 2015-10-16
      • 1970-01-01
      • 1970-01-01
      • 2013-11-14
      • 2018-06-14
      • 2019-09-15
      • 2021-07-30
      相关资源
      最近更新 更多