2024.02前Python学习小结
1、Python数据分析:对饮食与健康数据的分析与可视化
2、Python机器学习:Scikit-learn简单使用
3、Python深度学习:Tensorflow简单使用
文章目录
前言
本文旨在对以往学习的相关内容进行总结回顾,通过Scikit-learn对饮食与健康数据进行处理,因此具备以下特点:
- 练习目的,类似问题尽量使用多种方法
- 以锻炼方法为目的,不求用法非常贴切
- 代码部分尽量详细说明
一、相关说明
1.Scikit-learn特点
选择Scikit-learn作为机器学习主要内容是因为:
- 相对简单,不需要过多设置
- 能很好和seaborn配合进行可视化
- 包含数据处理方法,归一化、标准化两行就行
- 内容多,聚类、分类、回归,监督、无监督都有
- 评估方法多,交叉验证尤其全能充分利用有限的数据,适合练习
2.本文任务
本文期望将几类方式都涉及,必然的每部分不会太详细、贴切。
- 分类:LogisticRegressionCV,作生活习惯方面分类。
- 降维:主成分分析,减少属性
- 线性回归:LinearRegression,设置假索引,对BMI指标进行拟合。
- 聚类/K-Means:Agglomerative Clustering
- 其他:归一化、标准化、评估
二、数据说明及预处理
1.引入库
代码如下:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.linear_model import LogisticRegressionCV ## 分类、回归算法
from sklearn.model_selection import train_test_split ## 数据及划分、检验
from sklearn.neighbors import KNeighborsClassifier ## knn算法,一个直观的分类算法
from sklearn.preprocessing import MinMaxScaler, StandardScaler ## 归一化
import warnings ## Filter warnings
warnings.filterwarnings('ignore')
2.读入数据及清洗
先对数据进行去重和缺失值处理,同前文
#数据导入及处理
df_1 = pd.read_csv(r'D:\Pytharm\Practice\sjfenxilast\sti_sc.csv')
df_1.drop_duplicates(keep='first',inplace=True) #删除重复
df_1['Age'] = df_1['Age'].apply(int) #原数据年龄有太多小数
df = df_1[df_1['Age'] < 31] #原数据基本是30以下的,只选取小于30部分
为了使得预测、分类更准确,往往需要对取值范围过大数据标准化、对文本类数据转化为数字类。
以下部分进行几类处理:
- 将文本类指标转化为数字型
- 将数据间关系进行可视化展示
- 对列名太复杂的进行修改方便调用
#只保留饮食习惯属性和基础信息属性
df_diet = []
df_diet=df.loc[:,['Age','Weight','Height','FAVC','FCVC','NCP','CH2O','NObeyesdad']]
#将文本类型属性转换为数字类型
df_diet.loc[df_diet['FAVC'] == 'yes', 'FAVC_'] = 1
df_diet.loc[df_diet['FAVC'] == 'no', 'FAVC_'] = 0
df_diet.drop(['FAVC'], axis="columns", inplace=True)#删除列
#也可以使用map,replace,对最后的评价属性换不换都行,replace对未定义值会保留,map会换
dict = {
'Insufficient_Weight' : 0, 'Normal_Weight' : 1, 'Overweight_Level_I' : 2,
'Overweight_Level_II':