titanic_model = pd.get_dummies(titanic_model, columns=['sex', 'who'])
时间: 2024-01-27 08:03:09 浏览: 16
这段代码是将 Titanic 数据集中的 'sex' 和 'who' 列进行独热编码。独热编码是一种将离散型特征转换成数值型特征的方法,它将每个可能的取值转换成一个新的二进制特征,该特征只有在该取值出现时才为1,否则为0。这种编码方式可以避免算法中的权重偏差问题,并且可以有效地提高算法的准确性。在这个例子中,独热编码将 'sex' 和 'who' 列中的不同取值转换为新的二进制特征,并将它们添加到数据集中。
相关问题
# 导入相关库 import pandas as pd import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeClassifier from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score,roc_auc_score,roc_curve # 读取数据 df = pd.read_csv('C:/Users/E15/Desktop/机器学习作业/第一次作业/第一次作业/三个数据集/Titanic泰坦尼克号.csv') # 数据预处理 df = df.drop(["Name", "Ticket", "Cabin"], axis=1) # 删除无用特征 df = pd.get_dummies(df, columns=["Sex", "Embarked"]) # 将分类特征转换成独热编码 df = df.fillna(df.mean()) # 使用平均值填充缺失值 # 划分数据集 X = df.drop(["Survived"], axis=1) y = df["Survived"] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 决策树 dtc = DecisionTreeClassifier(random_state=42) dtc.fit(X_train, y_train) y_pred_dtc = dtc.predict(X_test) # 剪枝决策树 pruned_dtc = DecisionTreeClassifier(random_state=42, ccp_alpha=0.015) pruned_dtc.fit(X_train, y_train) y_pred_pruned_dtc = pruned_dtc.predict(X_test) # 随机森林 rfc = RandomForestClassifier(n_estimators=100, random_state=42) rfc.fit(X_train, y_train) y_pred_rfc = rfc.predict(X_test) # 计算评价指标 metrics = {"Accuracy": accuracy_score, "Precision": precision_score, "Recall": recall_score, "F1-Score": f1_score, "AUC": roc_auc_score} results = {} for key in metrics.keys(): if key == "AUC": results[key] = {"Decision Tree": roc_auc_score(y_test, y_pred_dtc), "Pruned Decision Tree": roc_auc_score(y_test, y_pred_pruned_dtc), "Random Forest": roc_auc_score(y_test, y_pred_rfc)} else: results[key] = {"Decision Tree": metrics[key](y_test, y_pred_dtc), "Pruned Decision Tree": metrics[key](y_test, y_pred_pruned_dtc), "Random Forest": metrics[key](y_test, y_pred_rfc)} # 打印评价指标的表格 results_df = pd.DataFrame(results) print(results_df)怎么打印auv图
要打印AUC图,可以使用`roc_curve`函数获取ROC曲线的参数,然后使用`matplotlib`库绘制曲线。具体代码如下:
```
# 计算ROC曲线参数
fpr_dtc, tpr_dtc, thresholds_dtc = roc_curve(y_test, y_pred_dtc)
fpr_pruned_dtc, tpr_pruned_dtc, thresholds_pruned_dtc = roc_curve(y_test, y_pred_pruned_dtc)
fpr_rfc, tpr_rfc, thresholds_rfc = roc_curve(y_test, y_pred_rfc)
# 绘制ROC曲线
plt.figure(figsize=(8, 6))
plt.plot(fpr_dtc, tpr_dtc, label='Decision Tree')
plt.plot(fpr_pruned_dtc, tpr_pruned_dtc, label='Pruned Decision Tree')
plt.plot(fpr_rfc, tpr_rfc, label='Random Forest')
plt.plot([0, 1], [0, 1], linestyle='--', color='grey')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver Operating Characteristic (ROC) Curve')
plt.legend()
plt.show()
```
这段代码将会绘制一个ROC曲线,其中每个分类器都使用不同的颜色表示,同时包含一个虚线表示随机分类器的结果。注意,这段代码需要在之前的代码块中运行,以确保`fpr`,`tpr`和`y_pred`参数已经存在。
import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.linear_model import LogisticRegression '''导入数据并粗略查看情况''' train_data = pd.read_csv(r'C:\Users\86181\Desktop\titanic\train.csv') test_data = pd.read_csv(r'C:\Users\86181\Desktop\titanic\test.csv') print(train_data.head()) print(np.sum(pd.isnull(train_data)))#查看缺失的信息 '''SibSp为兄弟妹的个数,Parch为父母与小孩的个数,Embarked为登船港口''' '''数据清洗''' train_data = train_data.drop(['PassengerId', 'Name', 'Ticket','Cabin'], axis = 1)#删除无关项 test_data = test_data.drop(['PassengerId', 'Name', 'Ticket','Cabin'], axis = 1) print(train_data.head()) train_data = train_data.dropna(axis = 0) print(np.sum(pd.isnull(train_data)))#再次查看是否还有缺失的信息 '''查看数据的总体情况''' train_data['Age'].hist() plt.xlabel('Age') plt.ylabel('Numbers of passengers') plt.title('The age of all passengers') plt.show() train_data['Pclass'].hist() plt.xlabel("'Passengers' class") plt.ylabel('Numbers of passengers') plt.title('The class of all passengers') plt.show() train_data['Sex'].hist() plt.xlabel("Sex") plt.ylabel('Numbers of passengers') plt.title('The sex of all passengers') plt.show() train_data['SibSp'].hist() plt.xlabel("The number of SibSp") plt.ylabel('Numbers of passengers') plt.title('The SibSp of all passengers') plt.show() train_data['Parch'].hist() plt.xlabel("The number of Parch") plt.ylabel('Numbers of passengers') plt.title('The Parch of all passengers') plt.show() train_data['Fare'].hist() plt.xlabel("Fare") plt.ylabel('Numbers of passengers') plt.title('The fare of all passengers') plt.show() train_data['Embarked'].hist() plt.xlabel("Embarked") plt.ylabel('Embarked of passengers') plt.title('The Embarked of all passengers') plt.show() train_data['Survived'].hist() plt.xlabel("Survived") plt.ylabel('Numbers of passengers') plt.title('Survived passengers') plt.show() '''开始分析''' X_train = train_data[['Pclass', 'Sex', 'Age', 'SibSp', 'Parch', 'Fare', 'Embarked']] Y_train = train_data[['Survived']] X_train = pd.get_dummies(train_data, columns = ['Pclass']) X_train = pd.get_dummies(train_data, columns = ['Embarked']) X_train['Sex'].replace('female', 0, inplace = True) X_train['Sex'].replace('male', 1, inplace = True) print(X_train.head()) print(np.sum(pd.isnull(X_train)))
这段Python代码的作用是:导入一些常用的数据分析和可视化库(numpy、pandas、matplotlib、sklearn),然后使用pandas读取Titanic数据集中的训练集和测试集。而后打印出训练集的前五行数据,以及训练集中每列的缺失值总数量。