训练集https://download.csdn.net/download/qq_42363032/12615443
测试集https://download.csdn.net/download/qq_42363032/12615448
'''
Seaborn是一个用Python制作统计图形的库。它构建在matplotlib之上,并与pandas数据结构紧密集成。 以下是seaborn提供的一些功能:
一个面向数据集的API,用于检查多个变量之间的关系
专门支持使用分类变量来显示观察结果或汇总统计数据
用于可视化单变量或双变量分布以及在数据子集之间比较它们的选项
各种因变量线性回归模型的自动估计与绘图
方便查看复杂数据集的总体结构
用于构造多图网格的高级封装,可以轻松地构建复杂的数据图表
使用几个内置主题对matplotlib图形样式进行简洁控制
用于选择能够真实显示数据中模式的调色板的工具
Seaborn的目标是使可视化成为探索和理解数据的核心部分。它面向数据集的绘图功能对包含整个数据集的数据流和数组进行操作,并在内部执行必要的语义映射和统计聚合以生成信息图。
'''
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 读取训练集和测试集
train = pd.read_csv('titanic_train.csv')
test = pd.read_csv('titanic_test.csv')
# PassengerId, Survived, Pclass, Name, Sex, Age, SibSp, Parch, Ticket, Fare, Cabin, Embarked
seaborn创建一个简单的热图来查看我们缺失数据的位置-----对测试集的缺失值查看。
# seaborn创建一个简单的热图来查看我们缺失数据的位置-----对测试集的缺失值查看。
sns.heatmap(test.isnull(), yticklabels=False, cbar=False, cmap='viridis', ) # yticklabels=False 不显示纵轴 cmap 颜色组
plt.title('缺失值查看')
plt.show()
Survived幸存下来0,1----对训练集的幸存下来画图分析
# Survived幸存下来0,1----对训练集的幸存下来画图分析
sns.set_style('whitegrid')
sns.countplot(x='Survived', data=train, palette='RdBu_r')
plt.show()
Survived幸存下来0,1----对训练集的幸存下来男女画图分析
# Survived幸存下来0,1----对训练集的幸存下来男女画图分析
sns.set_style('whitegrid')
sns.countplot(x='Survived', hue='Sex', data=train, palette='RdBu_r')
plt.show()
按乘客级别检查平均年龄画图展示1,2,3个级别
# 按乘客级别检查平均年龄画图展示1,2,3个级别
plt.figure(figsize=(12, 7))
sns.boxplot(x='Pclass', y='Age', data=train, palette='winter')
plt.show()
将性别转化成0,1数字格式 get_dummies相当于LabelEncoder+one-hot Encoder的基本思想
# 将性别转化成0,1数字格式 get_dummies相当于LabelEncoder+one-hot Encoder的基本思想
sex = pd.get_dummies(train['Sex'], drop_first=True) # drop_first去掉第一个分类
# 将Embarked转化成0,1代表S,,,00代表C,,10代表Q
embark = pd.get_dummies(train['Embarked'], drop_first=True)
完整代码
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 读取训练集和测试集
train = pd.read_csv('titanic_train.csv')
test = pd.read_csv('titanic_test.csv')
# PassengerId, Survived, Pclass, Name, Sex, Age, SibSp, Parch, Ticket, Fare, Cabin, Embarked
# seaborn创建一个简单的热图来查看我们缺失数据的位置-----对测试集的缺失值查看。
sns.heatmap(test.isnull(), yticklabels=False, cbar=False, cmap='viridis', ) # yticklabels=False 不显示纵轴
plt.title('缺失值查看')
plt.show()
# Survived幸存下来0,1----对训练集的幸存下来画图分析
sns.set_style('whitegrid')
sns.countplot(x='Survived', data=train, palette='RdBu_r')
plt.show()
# Survived幸存下来0,1----对训练集的幸存下来男女画图分析
sns.set_style('whitegrid')
sns.countplot(x='Survived', hue='Sex', data=train, palette='RdBu_r')
plt.show()
# 按乘客级别检查平均年龄画图展示1,2,3个级别
plt.figure(figsize=(12, 7))
sns.boxplot(x='Pclass', y='Age', data=train, palette='winter')
plt.show()
# 较高的阶层年龄较大,所以判断级别返回不同年龄
def impute_age(cols):
Age = cols[0]
Pclass = cols[1]
if pd.isnull(Age):
if Pclass == 1:
return 37 # 填充平均值,按照乘客的等级
elif Pclass == 2:
return 29
else:
return 24
else:
return Age
# 按级别对缺失值年龄进行填充--测试训练都进行填充
train['Age'] = train[['Age', 'Pclass']].apply(impute_age, axis=1)
test['Age'] = test[['Age', 'Pclass']].apply(impute_age, axis=1)
# seaborn创建一个简单的热图来查看我们缺失数据的位置---对训练集
sns.heatmap(train.isnull(), yticklabels=False, cbar=False, cmap='viridis')
plt.show()
print(train.columns)
# 我们放弃Cabn列和Embarked行中的NaN
train.drop('Cabin', axis=1, inplace=True) # del train['Cabin']
test.drop('Cabin', axis=1, inplace=True)
train.dropna(inplace=True)
# print(train.head())
# 填充完成后根据热成像图像反应以及没有缺失值
sns.heatmap(train.isnull(), yticklabels=False, cbar=False, cmap='viridis')
plt.show()
print(train.columns)
# 查看信息
print(train.info())
# 将性别转化成0,1数字格式 get_dummies相当于LabelEncoder+one-hot Encoder的基本思想
sex = pd.get_dummies(train['Sex'], drop_first=True) # drop_first去掉第一个分类
# 将Embarked转化成0,1代表S,,,00代表C,,10代表Q
embark = pd.get_dummies(train['Embarked'], drop_first=True)
# 删除'Sex','Embarked','Name','Ticket'
train.drop(['Sex', 'Embarked', 'Name', 'Ticket'], axis=1, inplace=True)
train = pd.concat([train, sex, embark], axis=1) # 合并特征
print(train.head())
# 训练集一开始特征
# PassengerId Survived Pclass Name Sex Age SibSpParch Ticket Fare Embarked
# 训练集删除后剩的特征
# PassengerId Survived Pclass Age SibSp Parch Fare male Q S
# 测试集特征
# PassengerId Survived Pclass Name Sex Age SibSp Parch Ticket Fare Embarked
# 训练测试拆分
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(train.drop('Survived', axis=1), train['Survived'], test_size=0.30,
random_state=101)
# 训练和预测
from sklearn.linear_model import LogisticRegression
logmodel = LogisticRegression()
logmodel.fit(X_train, y_train)
predictions = logmodel.predict(X_test)
# 我们可以使用分类报告检查精确度,召回率,f1分数!
from sklearn import metrics
print(metrics.classification_report(y_test, predictions))
print("Accuracy:", metrics.accuracy_score(y_test, predictions))
# 混淆矩阵、ROC曲线、AUC面积
本文地址:https://blog.csdn.net/qq_42363032/article/details/107346527
如对本文有疑问, 点击进行留言回复!!
Python笔记-UiSelector中resourceId定位方式
【3Dtiles】3Dmax模型处理为gltf和3dtiles,包含LOD效果
荐 用Django全栈开发——08. 使用AdminLTE开发前端登录页面
网友评论