数学建模python入门
库导入
python三大件
np : 数据计算 pd : 数据库 plt : 画图
import numpy as np import pandas as pd import matplotlib.pyplot as plt
图形可视化库:sns
import seaborn as sns
教程链接:https://zhuanlan.zhihu.com/p/49035741
算法模型库:sklearn
from sklearn.ensemble import RandomForestClassifier
数据导入
-
pandas库用于读入原始数据
path = 'LogiReg_data.txt' pdData=pd.read_csv(path, header=None,names=['Exam1','Exam2','Admitted']) pdData.head()
选取部分数据
df.loc[ 选取对象 ]
文件类型 CSV
- row_index 行索引(数字行号)
- column_name 列名
相当于(x, y)确定一个点坐标
获取部分数据单元
部分数据:称为切片
-
获取单个单元
df.loc[行索引,列名]
-
获取某一行
df.loc[行索引]
df.loc[ '行名' ]
-
获取某一列
df.loc[ '列名' ]
df.列名
-
获取指定几列
df.loc[:, ’列名A‘,’列名D‘ ]
-
获取连续几列
df.loc[:, ’列名A‘:’列名D‘ ]
总结
1:pandas loc 切片索引中是包含末尾值的,列表切片不包含末尾值, iloc也是不包含末尾值的
2:loc 获取指定行列是需要使用中括号 [ ] 进行包裹, 获取连续行列使用冒号 :
3:DataFrame中 loc 进行切片,默认使用行,即df[‘a’] 是获取 a 这一行的数据
————————————————
原文链接:https://blog.csdn.net/weixin_43229819/article/details/121194832
iloc切片索引
使用 iloc 进行切片索引,和 loc 方式类似,iloc 使用 索引编号来索引
df.iloc[ : , 0 : 1 ]
iloc结果不包含末尾值,代表列编号为0:1,从第0列开始,不包含第1列,总共1列
数据命名
- 训练集 train_data
- 测试集 test_data
- 处理过后 通常将train_data赋值给X, test_data赋值给X_test
- 目标结果集 target
训练集 | 测试集 | 目标值 |
---|---|---|
train_data | test_data | target |
X | X_test | y |
随机划分数据集
sklearn库中的
train_test_split()
函数随机划分训练集和测试集
X_train,x_test = train_test_split(x) X_train, X_test, y_train, y_test = train(X,y, random_state = 0)
- random_state: 随机数的编号,在需要重复试验的时候,保证得到一组一样的随机数。
- 每次都填1,其他参数一样的情况下得到的随机数组是一样的。
- 填0或不填,每次都会不一样。
数据预处理
缺失值处理
使用pandas中的
fillna()
函数填充NaN空缺值
- 通常情况下,可以填充为0
- 但比如年龄这类数值不建议填充为0时,将其填充为一个无意义数值,如:-1
X = pd.get_dummies(train_data[features].fillna(-1)) X_test = pd.get_dummies(test_data[features].fillna(-1))
使用Pandas中
dropna(axis=0)
函数直接去除缺失值所在记录
- 比如训练数据的目标值值缺失时,y为NaN, 可以直接扔掉该记录
- axis:轴。
- 0或'index',表示按行删除;
- 1或'columns',表示按列删除。
filtered_data = origin_data.dropna(axis=0)
非数值型属性处理
-
将分类型字符串转换为数值
-
离散化独热编码one-hot
pd.get_dummies(train_data[]) 有几种属性状态就生成几列0-1判别值,是该类为1,其他列全为0,实现以数字分类
如:Sex属性状态有:male、female
分别分为两列:Sex_male、Sex_female
通过列内0-1取值实现数值化字符串
可视化
热力图:相关性分析
1. 复制一份数据
data = original_data.copy() data.shape
2. 选择几个属性
# 数据选择,根据属性名筛选列表 numerical = [ 'extended','country','region','nreleased','ransom', 'nhostkid', 'success','suicide','specificity','vicinity','nkill'] idata = data[numerical] idata.shape
3. 缺失值处理
# 缺失值处理, 根据不同属性的特征,将缺失的值以各自对应的合适值填充 idata.nkill = np.round(data.nkill.fillna(data.nkill.median())).astype(int) idata.nwound = np.round(data.nwound.fillna(data.nwound.median())).astype(int) idata.nreleased = np.round(idata.nreleased.fillna(-1)).astype(int) idata.ransom = np.round(idata.ransom.fillna(-9)).astype(int) idata.nhostkid = np.round(idata.nhostkid.fillna(-99)).astype(int) idata.head()
4. 绘制热力图
# 绘制热力图 fig, ax = plt.subplots(figsize=(25, 25)) sns.heatmap(idata.corr(), annot = True,cmap= 'Blues',annot_kws={"fontsize":20})#, fmt='.6g',annot=True 表示显示系数 plt.xticks(fontsize=24) plt.yticks(fontsize=24) plt.savefig('relevance.png') plt.show()
本文作者:Hecto
本文链接:https://www.cnblogs.com/tow1/p/16503822.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步