您好,在您文章【sklearn】模型融合_堆叠法 中 在使用 对融合模型中的每个评估器做交叉验证,对单一评估器的表现进行评估的代码中
使用python运行的过程 无法出现结果 但是在对融合模型做交叉验证可以出现结果,我不知道为什么会出现这样的结果,有什么解决方法吗
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction import DictVectorizer
from sklearn.tree import DecisionTreeClassifier
def taitan():
"""
泰坦尼克号生死预测
:return: None
"""
# 获取文件,处理数据
taitan = pd.read_csv("http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt")
# 处理数据,找出特征值和目标值
x = taitan[["pclass", "age", "sex"]]#获取文件中特征值为pclass,age,sex的三列
y = taitan["survived"]#获取是否存活的结果
print(x)#打印输出看看效果
# 缺失值处理,对于na值用平均值处理
#这里的fillna方法是对age特征值中na值进行处理,用mean()平均值进行填充!inplace=True是指将填补的数据在原来的表上修改,而不是创建一个副本,在副本上修改
x['age'].fillna(x["age"].mean(), inplace=True)
# 分割数据集,一部分测试一部分训练,数据集的分割,分为训练集和测试集
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.25)
# 进行特征工程的处理,将数据集变换成one-hot形式
dict = DictVectorizer(sparse=False)
#这里涉及到.to_dict(orient="records")方法,就是将列表转换为一个一个字典形式,因为DictVectorizer()中接收的是字典形式
x_train = dict.fit_transform(x_train.to_dict(orient="records"))
#print(dict.get_feature_names())
x_test = dict.transform(x_test.to_dict(orient="records"))
#print(x_train)
#用决策数进行预测,这里就是决策树api
tre=DecisionTreeClassifier()
tre.fit(x_train,y_train)
#输出准确度
print(tre.score(x_test, y_test))
return None
if __name__ == "__main__":
taitan()