实例背景
下背痛顾名思义就是指下背部的疼痛,通常是指背部肋骨下缘以下的部分,由于好发于第四和第五腰椎或第五腰椎和第一骶椎间。也有不少人称之为“腰痛”,是现代人主要的文明病之一。1
本案例旨在根据下背痛特征与诊断结果,使用python及相关库进行数据分析,使用逻辑回归、knn和决策树建立分类模型。
提出任务
- 数据预处理
- 建立下背痛分类模型
数据预处理
导入相关库及配置:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings("ignore") # 忽略警告信息
plt.rcParams["font.family"] = "SimHei" # 字体样式
plt.rcParams["axes.unicode_minus"] = False # 显示坐标轴负号
查看数据:
data = pd.read_csv('dataset_spine.csv')
data.head()
data.info()
可以看出数据没有空值,各列名没有具体意义,且最后一列存在较多空值。
首先查看最后一列的数据:
for info in data.iloc[:,-1]:
if pd.notnull(info):
print(info)
根据输出内容可以看出,最后一列的文本为前面各列的说明。包括列名和数据类型。
因此,根据说明,把前面各列与实际代表的内容相对应上:
col_info = [] # 列信息集合
col_info.extend([info for info in data.iloc[:,-1] if pd.notnull(info)])
# col_info
col_name = [] # 列名集合
for attr in col_info[1:-1]:
# 将等号右边的列名根据顺序一一对应每一列,同时去掉多余空格并使用小写
attr = attr.split("=")[1].split("(")[0].replace(" ","").lower()
col_name.append(attr)
# col_name
col_name.append("state") # 最后一列表示疾病状态
# data.head()
data.drop(data.columns[len(data.columns)-1], axis=1, inplace=True) # 删除原数据最后一列
data.columns = col_name
data.head()