df_X = df[['PassengerId', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp', 'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked']] df_Y = df['Survived']
时间: 2023-12-21 16:21:48 浏览: 198
这段代码是将数据集 df 中的特征和标签分别存储在 df_X 和 df_Y 变量中。其中,df_X 包含了乘客的各种信息,包括乘客 ID、舱位等级、姓名、性别、年龄、同行兄弟姐妹/配偶的数量、同行父母/子女的数量、船票号码、票价、客舱号码以及登船港口等。df_Y 则包含了每个乘客是否生还的信息(1 表示生还,0 表示未生还)。这些信息可以用来训练机器学习模型,以预测未知乘客的生还情况。
相关问题
import numpy as np import pandas as pd from sklearn.model_selection import train_test_split df = pd.read_csv("data/train.csv", encoding='utf8') df_X = df[['PassengerId', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp', 'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked']] df_Y = df['Survived'] # train_X, test_X, train_Y, test_Y train_test_split(df_X.values, df_Y.values, test_size=0.2, random_state=1314) print("train_X.count:{}, test_X.count:{}, train_Y.count:{}, test_Y.count:{}").format(len(train_X), len(test_X), len(train_Y), len(test_X))怎么改
你需要把 `train_test_split` 函数的返回值赋值给四个变量,分别是训练集的特征、测试集的特征、训练集的标签、测试集的标签。同时,你需要使用 `print` 函数的格式化字符串功能,将括号中的内容改为 f-string 的形式,即在字符串前面加上 `f`,然后用花括号 `{}` 包裹变量名。具体代码如下:
```
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
df = pd.read_csv("data/train.csv", encoding='utf8')
df_X = df[['PassengerId', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp', 'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked']]
df_Y = df['Survived']
# train_X, test_X, train_Y, test_Y
train_X, test_X, train_Y, test_Y = train_test_split(df_X.values, df_Y.values, test_size=0.2, random_state=1314)
print(f"train_X.count:{len(train_X)}, test_X.count:{len(test_X)}, train_Y.count:{len(train_Y)}, test_Y.count:{len(test_X)}")
```
这样就可以正确输出训练集和测试集的大小了。
import pandas as pd from sklearn.ensemble import RandomForestRegressor titanic = pd.read_csv("D:/新建文件夹/实训/train.csv") ### 使用 RandomForestClassifier 填补缺失的年龄属性 def set_missing_ages(df): # 把已有的数值型特征取出来丢进Random Forest Regressor中 age_df = df[['Age', 'Fare', 'Parch', 'SibSp', 'Pclass']] # 乘客分成已知年龄和未知年龄两部分 known_age = age_df[age_df.Age.notnull()].values() unknown_age = age_df[age_df.Age.isnull()].values() # y即目标年龄 y = known_age[:, 0] # X即特征属性值 X = known_age[:, 1:] # fit到RandomForestRegressor之中 rfr = RandomForestRegressor(random_state=0, n_estimators=2000, n_jobs=-1) rfr.fit(X, y) # 用得到的模型进行未知年龄结果预测 predictedAges = rfr.predict(unknown_age[:, 1::]) # 用得到的预测结果填补原缺失数据 df.loc[(df.Age.isnull()), 'Age'] = predictedAges return df titanic = set_missing_ages(titanic) #将Embarked,Sex,Pclass转换成为onehot编码 dummies_Embarked = pd.get_dummies(titanic['Embarked'], prefix= 'Embarked') dummies_Sex = pd.get_dummies(titanic['Sex'], prefix= 'Sex') dummies_Pclass = pd.get_dummies(titanic['Pclass'], prefix= 'Pclass') df = pd.concat([titanic, dummies_Embarked, dummies_Sex, dummies_Pclass], axis=1) df.drop(['Pclass', 'Name', 'Sex', 'Ticket', 'Cabin', 'Embarked'], axis=1, inplace=True) print(df)
这段代码的问题可能是在以下这行代码:
```python
known_age = age_df[age_df.Age.notnull()].values()
```
这里的 values() 应该改成 values。
values() 是一个 pandas DataFrame 的方法,用来返回数据帧的值的 Numpy 数组形式。但是在这里,我们已经使用了 .values 属性来获取 age_df 的 Numpy 数组形式,所以不能再次使用 values() 方法。修改代码为:
```python
known_age = age_df[age_df.Age.notnull()].values
```
这样就可以避免这个错误了。
阅读全文