数据分析:人工智能篇

文章目录

    • 第三章 数据可视化库matplotlib
      • 3.1 matplotlib基本绘图操作
      • 3.2 plot的线条和颜色
      • 3.3 条形图分析
      • 3.4 箱型图分析
      • 3.5 直方图分析
      • 3.6 散点图分析
      • 3.7 图表的美化
    • 第四章 数据预测库Sklearn
      • 4.1 sklearn预测未来
      • 4.2 回归数据的预测
        • 4.2.1 回归数据的切分
        • 4.2.2 线性回归数据模型
        • 4.2.3 回归模型评估方法-MSE
      • 4.3 二分类数据的预测
        • 4.3.1 二分类数据的切分
        • 4.3.2 逻辑回归数据模型
        • 4.3.3 二分类模型评估指标-准确率
        • 4.3.2 逻辑回归数据模型
        • 4.3.3 二分类模型评估指标-准确率

第三章 数据可视化库matplotlib

3.1 matplotlib基本绘图操作

  • import matplotlib.pyplot as plt
    import numpy as np
    # 中文设置
    plt.rcParams['font.sans-serif'] =['KaiTi'] # 指定默认字体
    plt.rcParams['axes.unicode_minus'] = False #解决保存图像是负号'-'显示为方块的问题# 设置图形大小,即设置画布
    plt.figure(figsize=(10,5))# 画直线
    x = np.arange(10)
    y = 2 * x + 10
    plt.plot(x, y) # 画图# x,y轴的名称
    plt.xlabel('x')
    plt.ylabel('y')# 标题
    plt.title("简单的直线")plt.show() # 展示图形
    

在这里插入图片描述

3.2 plot的线条和颜色

  1. 线条形状设置

    • 字符线条类型字符线条类型
      ‘-’实线‘–’虚线
      ‘-.’虚点线‘:’点线
      ‘.’‘,’像素点
      ‘o’圆点‘v’下三角点
      ‘^’上三角形‘<’左三角形
      ‘>’右三角形‘1’下三叉点
      ‘2’上三叉点‘3’左三叉点
      ‘4’右三叉点‘s’正方点
      ‘p’五角点‘*’星形点
      ‘h’六边形点‘H’六边形点2
      ‘+’+号点‘x’乘号点
      ‘D’实习菱形点‘d’瘦菱形点
  2. 常用颜色缩写

    • 字符颜色英文全称
      ‘b’蓝色blue
      ‘g’绿色green
      ‘r’红色reed
      ‘c’青色cyan
      ‘m’品红magenta
      ‘y’黄色yellow
      ‘k’黑色black
      ‘w’白色white
  3. 示例:

    • import matplotlib.pyplot as plt
      import numpy as np
      x = np.linspace(-10,10)
      len(x)## 50y = np.sin(x)
      len(y)## 50# 设置图形大小,即设置画布
      plt.figure(figsize=(10,5))# plt.plot(x, y,'-.',color='r') # 画图
      plt.plot(x, y,'b-.') # 标题
      plt.title("正弦函数")
      # x,y轴的名称
      plt.xlabel('x')
      plt.ylabel('y')plt.show() ## 展示图片
      

      在这里插入图片描述

3.3 条形图分析

在这里插入图片描述

  1. 示例一:

    • import matplotlib.pyplot as plt
      import numpy as np# 中文设置
      plt.rcParams['font.sans-serif'] = ['KaiTi'] # 设置默认字体
      plt.rcParams['axes.unicode_minus'] = False #解决保存图像是负号'-'显示为方块的问题x = ['北京', '上海', '深圳', '广州']
      y = [20, 18, 21, 18]# 设置画布
      plt.figure(figsize=(10,6))
      # 设置标题
      plt.title('各个城市的销量',fontsize=16) ## fontsize设置字体大小
      # 画条形图
      plt.bar(x, y)
      plt.show()
      

      在这里插入图片描述

      # 设置画布
      plt.figure(figsize=(10,6))
      # 设置标题
      plt.title('各个城市的销量',fontsize=16) ## fontsize设置字体大小
      # 画条形图
      plt.barh(x, y) 
      plt.show()
      

      外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  2. 示例二(数据实操):

    • # 读取data文件夹下面的学生信息表
      import pandas as pd
      data = pd.read_excel("data/学生信息.xlsx")
      data## 班级	学号	性别	身高	体重
      0	11101173	63
      1	11102192	73
      2	11103186	82
      3	11104167	81
      4	11105159	64
      5	21201188	68
      6	21202176	94
      7	21203160	53
      8	21204162	63
      9	21205167	63
      10	31301161	68
      11	31302175	57
      12	31303188	82
      13	31304195	70
      14	31305187	69
      15	12101174	84
      16	12102161	61
      17	12103157	61
      18	12104159	97
      19	12105170	81
      20	22201193	100
      21	22202194	77
      22	22203155	91
      23	22204175	74
      24	22205183	76
      25	32301157	78
      26	32302171	88
      27	32303190	99
      28	32304164	81
      29	32305187	73
      30	42401192	62
      31	42402166	82
      32	42403158	60
      33	42404160	84
      34	42405193	54
      
    • # 查看有多少个班级,分析各个班学生的身高分布(即平均值)
      data['班级'].unique() ##array(['1班', '2班', '3班', '4班'], dtype=object)
      a = data.groupby("班级")["身高"].mean().reset_index()
      a##班级	身高
      0	1169.8
      1	2175.3
      2	3177.5
      3	4173.8plt.figure(figsize=(10,6))
      plt.bar(a["班级"],a["身高"])
      plt.show()# 分析各个班级的体重
      b = data.groupby("班级")["体重"].mean().reset_index()
      b##班级	体重
      0	174.7
      1	275.9
      2	376.5
      3	468.4plt.figure(figsize=(10,6))
      plt.bar(b["班级"],b["体重"])
      plt.show()
      

      在这里插入图片描述

      在这里插入图片描述

3.4 箱型图分析

  1. 箱型图

    • 反映一组数据的分布特征,如:分布是否对称,是否存在异常点;
    • 对多维数据的分布可以进行比较;
    • 针对连续性变量分析;

    在这里插入图片描述

  2. 示例:

    • ## data文件夹下的箱型图数据.xlsx
      import matplotlib.pyplot as plt
      import numpy as np
      import pandas as pddata = pd.read_excel("data/箱型图数据.xlsx")
      data##数据1			数据2		数据3
      0	0.673772	2.877434	2.049346
      1	2.094364	1.744089	-2.000739
      2	-0.229255	-3.478537	-1.174358
      3	0.162415	-0.161255	-0.192022
      4	1.601201	0.249620	-3.260043
      ...	...	...	...
      95	0.802054	-2.125556	4.469550
      96	0.704063	-0.020990	-0.325966
      97	-1.003454	-0.645414	-3.517653
      98	1.009918	1.299786	1.303022
      99	0.798712	2.160066	4.128328
      100 rows × 3 columns# 单个
      plt.boxplot(data["数据1"])
      plt.show()# 三个放一起
      plt.boxplot([data["数据1"],data["数据2"],data["数据3"]],labels=["数据1", "数据2", "数据3"])
      plt.show()
      

      在这里插入图片描述

      在这里插入图片描述

3.5 直方图分析

  1. 直方图:

    • 直方图又称频率分布图,是一种显示数据分布情况的柱形图,即不同数据出现的频率

    • 通过这些高度不同的柱形,可以直观、快速地观察数据的分散程度和中心趋势,从而分析流程满足客户的程度

    • 在这里插入图片描述

  2. 示例(数据实操):

    • # data文件夹下的直方图数据下有两个xlsx文件
      import matplotlib.pyplot as plt
      import pandas as pddata = pd.read_excel("data/直方图数据/乘客信息.xlsx")
      data##乘客编号	年龄
      0	1	22
      1	2	38
      2	3	26
      3	4	35
      4	5	35
      ...	...	...
      709	886	39
      710	887	27
      711	888	19
      712	890	26
      713	891	32
      714 rows × 2 columnsdata1 = pd.read_excel("data/直方图数据/学生分数.xlsx")
      data1## 
      学生编号	分数
      0	162	56
      1	129	28
      2	25	2
      3	114	21
      4	130	29
      ...	...	...
      185	178	78
      186	148	42
      187	123	25
      188	82	10
      189	30	3
      190 rows × 2 columns
      
    • # 分析其年龄分布情况# 中文设置
      plt.rcParams["font.sans-serif"] = ["KaiTi"] # 设置默认字体
      plt.rcParams["axes.unicode_minus"] = False # 解决"-"号显示为方块的问题plt.hist(data["年龄"], bins=20, density=True, color='r', edgecolor='k') 
      # bins表示区间数 # density表示对直方图作出规划(纵轴变为频率了)# edgecolor表示对边缘加颜色
      plt.xlabel("年龄")
      plt.ylabel("频率")
      plt.title("直方图")
      plt.show() # 分析班级里面学生成绩的分布情况
      plt.hist(data1["分数"], bins=50, density=True,color='y',edgecolor='k')
      plt.xlabel("分数")
      plt.ylabel("频率")
      plt.title("直方图")
      plt.show()
      

      在这里插入图片描述

      在这里插入图片描述

3.6 散点图分析

  1. 散点图:

    • 用两组数据构成多个坐标点,考察坐标点之间的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式
    • 散点图主要用来研究两个连续性变量之间的关系
    • 在这里插入图片描述
  2. 示例(数据实操):

    • # data文件夹下的国民经济核算季度数据.xlsx
      import matplotlib.pyplot as plt
      import pandas as pddata = pd.read_excel("data/国民经济核算季度数据.xlsx")
      data.columns##
      Index(['序号', '时间', '国内生产总值_当季值(亿元)', '第一产业增加值_当季值(亿元)', '第二产业增加值_当季值(亿元)','第三产业增加值_当季值(亿元)', '农林牧渔业增加值_当季值(亿元)', '工业增加值_当季值(亿元)','建筑业增加值_当季值(亿元)', '批发和零售业增加值_当季值(亿元)', '交通运输、仓储和邮政业增加值_当季值(亿元)','住宿和餐饮业增加值_当季值(亿元)', '金融业增加值_当季值(亿元)', '房地产业增加值_当季值(亿元)','其他行业增加值_当季值(亿元)'],dtype='object')
      
    • # 分析国内生产总值和第一产业的值之间的相关性
      # 单个散点图
      plt.scatter(data["国内生产总值_当季值(亿元)"],data["第一产业增加值_当季值(亿元)"])
      plt.show()# 分析国内生产总值和第一产业的值之间的相关性
      # 分析国内生产总值和第二产业的值之间的相关性
      # 分析国内生产总值和第三产业的值之间的相关性
      # 多个散点图
      plt.scatter(data["国内生产总值_当季值(亿元)"],data["第一产业增加值_当季值(亿元)"], label="第一产业")
      plt.scatter(data["国内生产总值_当季值(亿元)"],data["第二产业增加值_当季值(亿元)"], label="第二产业")
      plt.scatter(data["国内生产总值_当季值(亿元)"],data["第三产业增加值_当季值(亿元)"], label="第三产业")
      plt.legend() # legend可以将label调用
      plt.show()
      

      在这里插入图片描述

      在这里插入图片描述

3.7 图表的美化

  1. 基本设置:

    • 图例设置plt.legend(loc=“best”)
      画布设置plt.figure(figsize=(10,6))
      标题设置plt.title(string,size=10,color=“red”)
      横轴设置plt.xlabel(string,fontsize=10)
      纵轴设置plt.ylabel(string,fontsize=10)
      是否显示网络plt.grid(False)
    • loc=“best”自动找到最佳位置
      loc=“upper left”左上角位置
      loc=“upper right”右上角位置
      loc=“lower left”左下角位置
      loc=“lower right”右下角位置
      loc=“center left”左边中间位置
      loc=“center right”右边中间位置
  2. 示例:

    • import matplotlib.pyplot as plt
      import numpy as np# 中文设置
      plt.rcParams["font.sans-serif"] = ["KaiTi"] # 设置默认字体
      plt.rcParams["axes.unicode_minus"] = False # 解决"-"号显示为方块的问题plt.figure(figsize=(10,6)) # 画布大小
      x = np.linspace(0,20,100)
      plt.plot(x, 2*x, label="曲线1")
      plt.plot(x, 3*x, label="曲线2")
      plt.plot(x, 4*x, label="曲线2")
      plt.legend(loc="best")  ## 默认best
      plt.title("三条曲线",size=16,color="r")
      plt.xlabel("变量1", fontsize=16,color='c')
      plt.ylabel("变量2", fontsize=16, color='m')
      plt.grid(True) 
      plt.show()
      

      在这里插入图片描述

第四章 数据预测库Sklearn

4.1 sklearn预测未来

在这里插入图片描述

4.2 回归数据的预测

4.2.1 回归数据的切分

在这里插入图片描述

  1. 示例(数据实操):

    • # data文件夹下的房价数据.xlsx
      import pandas as pddata = pd.read_excel("data/房价数据.xlsx")
      data##	城镇人均犯罪率	城镇非零售商用土地比例	一氧化氮浓度	住宅平均房间数	到城市中心区域的加权距离	房价(万元)
      0	0.00632	2.31	0.538	6.575	4.0900	2.40
      1	0.02731	7.07	0.469	6.421	4.9671	2.16
      2	0.02729	7.07	0.469	7.185	4.9671	3.47
      3	0.03237	2.18	0.458	6.998	6.0622	3.34
      4	0.06905	2.18	0.458	7.147	6.0622	3.62
      ...	...	...	...	...	...	...
      501	0.06263	11.93	0.573	6.593	2.4786	2.24
      502	0.04527	11.93	0.573	6.120	2.2875	2.06
      503	0.06076	11.93	0.573	6.976	2.1675	2.39
      504	0.10959	11.93	0.573	6.794	2.3889	2.20
      505	0.04741	11.93	0.573	6.030	2.5050	1.19
      506 rows × 6 columns
      
    • ## 用前五个属性来预测房价
      from sklearn.model_selection import train_test_split  # 训练跟测试切分的方法
      train, valid = train_test_split(data, test_size=0.2, shuffle=True, random_state=2020)  # 0.8作为训练集,0.2作为验证集,0.2表示把验证集 大小切成0.2
      # shuffle=True切分的时候把数据打乱, 便于切出来的数据比较均匀  # random_state 随机种子,返回的是一个列表
      # 返回的数据分别是训练集和验证集,分别把他们赋值给train和valid两个变量data.shape  ## 未切分前的形状## (506, 6)train.shape  ## 切分后的形状## (404, 6)valid.shape ## 切分后的形状## (102, 6)404 / 506 # 训练集
      ## 0.7984189723320159102 / 506 # 验证集
      ## 0.2015810276679842
    • train##
      城镇人均犯罪率	城镇非零售商用土地比例	一氧化氮浓度	住宅平均房间数	到城市中心区域的加权距离	房价(万元)
      215	0.19802	10.59	0.489	6.182	3.9454	2.50
      191	0.06911	3.44	0.437	6.739	6.4798	3.05
      107	0.13117	8.56	0.520	6.127	2.1224	2.04
      442	5.66637	18.10	0.740	6.219	2.0048	1.84
      230	0.53700	6.20	0.504	5.981	3.6715	2.43
      ...	...	...	...	...	...	...
      195	0.01381	0.46	0.422	7.875	5.6484	5.00
      118	0.13058	10.01	0.547	5.872	2.4775	2.04
      323	0.28392	7.38	0.493	5.708	4.7211	1.85
      392	11.57790	18.10	0.700	5.036	1.7700	0.97
      352	0.07244	1.69	0.411	5.884	10.7103	1.86
      404 rows × 6 columnsvalid##
      城镇人均犯罪率	城镇非零售商用土地比例	一氧化氮浓度	住宅平均房间数	到城市中心区域的加权距离	房价(万元)
      409	14.43830	18.10	0.5970	6.852	1.4655	2.75
      247	0.19657	5.86	0.4310	6.226	8.0555	2.05
      399	9.91655	18.10	0.6930	5.852	1.5004	0.63
      300	0.04417	2.24	0.4000	6.871	7.8278	2.48
      321	0.18159	7.38	0.4930	6.376	4.5404	2.31
      ...	...	...	...	...	...	...
      204	0.02009	2.68	0.4161	8.034	5.1180	5.00
      495	0.17899	9.69	0.5850	5.670	2.7986	2.31
      244	0.20608	5.86	0.4310	5.593	7.9549	1.76
      413	28.65580	18.10	0.5970	5.155	1.5894	1.63
      216	0.04560	13.89	0.5500	5.888	3.1121	2.33
      102 rows × 6 columns
      
4.2.2 线性回归数据模型

在这里插入图片描述

  1. 示例(实操接4.2.1数据):

    • # 预测房价
      # 导入线性回归模型
      from sklearn.linear_model import LinearRegressionmodel = LinearRegression() # 定义一个数据模型# train , valid # 训练集训练数据,验证集用来预测数据
      model.fit(train[['城镇人均犯罪率', '城镇非零售商用土地比例','一氧化氮浓度','住宅平均房间数','到城市中心区域的加权距离']], train['房价(万元)'])  
      # fit传入需要训练的特征,这里需要传入除预测外的所有属性 ,fit表示训练的意思## LinearRegression()pred = model.predict(valid[['城镇人均犯罪率', '城镇非零售商用土地比例','一氧化氮浓度','住宅平均房间数','到城市中心区域的加权距离']])
      pred
      # predict表示预测,对验证集的每条数据进行预测##
      array([ 2.46474589,  2.2128151 ,  1.65888896,  2.85265327,  2.52879848,2.2258853 ,  2.57939134,  2.59693129,  1.82202357,  2.40885497,2.77841379,  1.64989292,  2.25647387,  3.30694586,  1.94037339,2.49620692,  2.03597603,  2.61239847,  1.95491352,  1.73957756,2.1573622 ,  2.82385479,  2.09397049,  2.33096025,  0.80547778,0.83617233,  2.43902438,  1.73929665,  3.29007521,  0.96528621,2.80937346,  2.75473389, -0.04440117,  2.4362086 ,  2.053418  ,0.87830185,  2.00948295,  2.45519188,  1.94278751,  2.27900789,2.80594378,  2.2755299 ,  2.15347854,  3.23576954,  1.9600308 ,2.26173723,  2.29422412,  2.06932986,  2.27333606,  2.95266904,2.84799092,  2.59296111,  2.65458646,  1.42464319,  1.82023523,1.16141491,  2.70465962,  2.31695954,  1.55678262,  2.46458798,2.43287322,  2.23338117,  2.67973044,  4.33672353,  2.95615622,2.53254281,  2.70089423,  0.27060842,  1.71579957,  2.12512989,2.5633941 ,  2.31433153,  2.84858425,  2.03601581,  2.46245774,2.02078349,  2.25731773,  2.38199773,  2.14867614,  2.46881375,2.32091925,  2.16436359,  3.11908093,  3.43351395,  3.3118866 ,1.69532309,  1.87010176,  2.3609788 ,  3.13228058,  2.08536776,1.75231547,  1.93768106,  2.04788031,  2.28601279,  2.1095751 ,2.38820313,  1.59125697,  3.93697614,  1.97308141,  1.75644051,0.92296715,  2.05833759])len(pred)## 102train.columns## 
      Index(['城镇人均犯罪率', '城镇非零售商用土地比例', '一氧化氮浓度', '住宅平均房间数', '到城市中心区域的加权距离','房价(万元)'],dtype='object')valid.columns##
      Index(['城镇人均犯罪率', '城镇非零售商用土地比例', '一氧化氮浓度', '住宅平均房间数', '到城市中心区域的加权距离','房价(万元)'],dtype='object')
      
4.2.3 回归模型评估方法-MSE

在这里插入图片描述

  1. MSE

    • 即均方误差
    • MSE的值越大,表明预测效果越差
  2. 示例(实操接4.2.2数据):

    • # vaild验证集是真实准确的数据,pred是经过验证集预测的数据
      import numpy as np
      # 导入均方误差
      from sklearn.metrics import mean_squared_error  # mean_squared_error表示均方误差mse_error = mean_squared_error(valid['房价(万元)'],pred)  # 先传入实际值,再传入预测值
      mse_error## 0.38184398467340286np.sqrt(mse_error)  # 对均方误差进行开方,就可以知道每个样本的偏离程度 # np.sqrt 是numpy的开方## 0.6179352592896791

4.3 二分类数据的预测

4.3.1 二分类数据的切分
  1. 示例(数据实操):

    • # data文件夹下的泰坦尼克号数据.xlsx  # 0是死亡,1是存活
      import pandas as pd
      data = pd.read_excel("data/泰坦尼克号数据.xlsx")
      data## 乘客编号	船票种类	性别	年龄	乘客兄弟姐妹/配偶的个数	乘客父母/孩子的个数	是否存活
      0	1	3	male	22.0	1	0	0
      1	2	1	female	38.0	1	0	1
      2	3	3	female	26.0	0	0	1
      3	4	1	female	35.0	1	0	1
      4	5	3	male	35.0	0	0	0
      ...	...	...	...	...	...	...	...
      886	887	2	male	27.0	0	0	0
      887	888	1	female	19.0	0	0	1
      888	889	3	female	-10.0	1	2	0
      889	890	1	male	26.0	0	0	1
      890	891	3	male	32.0	0	0	0
      891 rows × 7 columnsdata.dtypes  
      # 性别 是字符串类型,不符合字符类型,需要转为数值类型。因为数学模型里面必须要都是数值类型才可以分析##
      乘客编号              int64
      船票种类              int64
      性别               object
      年龄              float64
      乘客兄弟姐妹/配偶的个数      int64
      乘客父母/孩子的个数        int64
      是否存活              int64
      dtype: objectdata['性别'].value_counts()##
      male      577
      female    314
      Name: 性别, dtype: int64data['性别'] = data['性别'].apply(lambda x: 0 if x == 'male'else 1)  
      # 用pandas学的apply快速实现转换,然后更新列的数据
      data.head()  # 显示修改后的前五条数据##乘客编号	船票种类	性别	年龄	乘客兄弟姐妹/配偶的个数	乘客父母/孩子的个数	是否存活
      0	1	3	1	22.0	1	0	0
      1	2	1	1	38.0	1	0	1
      2	3	3	1	26.0	0	0	1
      3	4	1	1	35.0	1	0	1
      4	5	3	1	35.0	0	0	0
      
    • from sklearn.model_selection import train_test_splittrain,valid = train_test_split(data, test_size=0.2, shuffle=True, random_state=2020)data["是否存活"].value_counts() # 0是死亡,1是存活##
      0    549
      1    342
      Name: 是否存活, dtype: int64549 / 342 # 死亡:活着
      ##1.605263157894737train['是否存活'].value_counts()##
      0    444
      1    268
      Name: 是否存活, dtype: int64444/268
      ## 1.6567164179104477valid['是否存活'].value_counts()##
      0    105
      1     74
      Name: 是否存活, dtype: int64105/74
      ## 1.4189189189189189# 由以上数据可知 训练集是1.6多,而验证集是1.4,跟预测数据1.60的比值差别太大差别太大### 解决办法 # 用stratify,进行分层抽样
      train,valid = train_test_split(data, test_size=0.2, shuffle=True, random_state=2020, stratify=data["是否存活"])train['是否存活'].value_counts()##
      0    439
      1    273
      Name: 是否存活, dtype: int64439/273
      ## 1.6080586080586081valid['是否存活'].value_counts()##
      0    110
      1     69
      Name: 是否存活, dtype: int64110/69
      ## 1.5942028985507246
4.3.2 逻辑回归数据模型

在这里插入图片描述

  1. logistic函数:

    • # logistic函数曲线
      import numpy as np
      import matplotlib.pyplot as plt
      x = np.linspace(-10, 10, 100)
      y = 1 / (1 + np.exp(-x))  # np.exp就是数学中的自然e,np.exp(-x)表示e的-x次方
      plt.plot(x, y)
      plt.show()
      

      在这里插入图片描述

  2. 示例(实操接4.3.1数据):

    • from sklearn.linear_model import LogisticRegression # LogisticRegression 逻辑回归model = LogisticRegression() # 定义一个数据模型train.columns # 因为每个乘客的乘客编号都不同,就不熟他们特有的特征了,索引只取其他五个特有的属性##
      Index(['乘客编号', '船票种类', '性别', '年龄', '乘客兄弟姐妹/配偶的个数', '乘客父母/孩子的个数', '是否存活'], dtype='object')# 训练
      model.fit(train[['船票种类', '性别', '年龄', '乘客兄弟姐妹/配偶的个数', '乘客父母/孩子的个数']], train['是否存活'])## LogisticRegression() # 成功# 预测
      pred = model.predict(valid[['船票种类', '性别', '年龄', '乘客兄弟姐妹/配偶的个数', '乘客父母/孩子的个数']])
      pred # 预测结果##
      array([0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0,0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0,1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1,0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0,1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1,0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0,1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1,0, 0, 0], dtype=int64)
4.3.3 二分类模型评估指标-准确率

在这里插入图片描述

  1. 准确率:

    • 准确率,Accuracy,表示模型预测正确地比例

    • A c c u r a c y = M / N Accuracy = M/N Accuracy=M/N

    • M表示预测对的数量,N表示需要预测的数据

    • Accuracy的值越大,表明预测的效果越好

  2. 示例(实操接4.3.2数据):

    • from sklearn.metrics import accuracy_score # accuracy_score 准确率分数,用来计算准确率的
      accuracy_score(valid["是否存活"], pred)  # 先传入真实数据再传入预测数据## 0.776536312849162

if x == 'male’else 1)
# 用pandas学的apply快速实现转换,然后更新列的数据
data.head() # 显示修改后的前五条数据

 ##乘客编号	船票种类	性别	年龄	乘客兄弟姐妹/配偶的个数	乘客父母/孩子的个数	是否存活0	1	3	1	22.0	1	0	01	2	1	1	38.0	1	0	12	3	3	1	26.0	0	0	13	4	1	1	35.0	1	0	14	5	3	1	35.0	0	0	0```
  • from sklearn.model_selection import train_test_splittrain,valid = train_test_split(data, test_size=0.2, shuffle=True, random_state=2020)data["是否存活"].value_counts() # 0是死亡,1是存活##
    0    549
    1    342
    Name: 是否存活, dtype: int64549 / 342 # 死亡:活着
    ##1.605263157894737train['是否存活'].value_counts()##
    0    444
    1    268
    Name: 是否存活, dtype: int64444/268
    ## 1.6567164179104477valid['是否存活'].value_counts()##
    0    105
    1     74
    Name: 是否存活, dtype: int64105/74
    ## 1.4189189189189189# 由以上数据可知 训练集是1.6多,而验证集是1.4,跟预测数据1.60的比值差别太大差别太大### 解决办法 # 用stratify,进行分层抽样
    train,valid = train_test_split(data, test_size=0.2, shuffle=True, random_state=2020, stratify=data["是否存活"])train['是否存活'].value_counts()##
    0    439
    1    273
    Name: 是否存活, dtype: int64439/273
    ## 1.6080586080586081valid['是否存活'].value_counts()##
    0    110
    1     69
    Name: 是否存活, dtype: int64110/69
    ## 1.5942028985507246
4.3.2 逻辑回归数据模型

[外链图片转存中…(img-qmvxTRUZ-1696233196612)]

  1. logistic函数:

    • # logistic函数曲线
      import numpy as np
      import matplotlib.pyplot as plt
      x = np.linspace(-10, 10, 100)
      y = 1 / (1 + np.exp(-x))  # np.exp就是数学中的自然e,np.exp(-x)表示e的-x次方
      plt.plot(x, y)
      plt.show()
      

      [外链图片转存中…(img-eO8xp7LI-1696233196612)]

  2. 示例(实操接4.3.1数据):

    • from sklearn.linear_model import LogisticRegression # LogisticRegression 逻辑回归model = LogisticRegression() # 定义一个数据模型train.columns # 因为每个乘客的乘客编号都不同,就不熟他们特有的特征了,索引只取其他五个特有的属性##
      Index(['乘客编号', '船票种类', '性别', '年龄', '乘客兄弟姐妹/配偶的个数', '乘客父母/孩子的个数', '是否存活'], dtype='object')# 训练
      model.fit(train[['船票种类', '性别', '年龄', '乘客兄弟姐妹/配偶的个数', '乘客父母/孩子的个数']], train['是否存活'])## LogisticRegression() # 成功# 预测
      pred = model.predict(valid[['船票种类', '性别', '年龄', '乘客兄弟姐妹/配偶的个数', '乘客父母/孩子的个数']])
      pred # 预测结果##
      array([0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0,0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0,1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1,0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0,1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1,0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0,1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1,0, 0, 0], dtype=int64)
4.3.3 二分类模型评估指标-准确率

[外链图片转存中…(img-gQr0jn8Z-1696233196613)]

  1. 准确率:

    • 准确率,Accuracy,表示模型预测正确地比例

    • A c c u r a c y = M / N Accuracy = M/N Accuracy=M/N

    • M表示预测对的数量,N表示需要预测的数据

    • Accuracy的值越大,表明预测的效果越好

  2. 示例(实操接4.3.2数据):

    • from sklearn.metrics import accuracy_score # accuracy_score 准确率分数,用来计算准确率的
      accuracy_score(valid["是否存活"], pred)  # 先传入真实数据再传入预测数据## 0.776536312849162

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/147564.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【小尘送书-第六期】《巧用ChatGPT轻松玩转新媒体运营》AI赋能运营全流程,帮你弯道超车、轻松攀登运营之巅

大家好&#xff0c;我是小尘&#xff0c;欢迎你的关注&#xff01;大家可以一起交流学习&#xff01;欢迎大家在CSDN后台私信我&#xff01;一起讨论学习&#xff0c;讨论如何找到满意的工作&#xff01; &#x1f468;‍&#x1f4bb;博主主页&#xff1a;小尘要自信 &#x1…

云原生数据库TDSQL-C

数据库系统核心模块 云原生数据库要解决什么问题&#xff1f; HTAP 云数据库VS云原生数据库

《C++ primer plus》精炼(OOP部分)——对象和类(8)

学习是一项持续的投资&#xff0c;永远不会白费——本杰明富兰克林 文章目录 第13章&#xff1a;类继承一个基类和派生类公有继承的逻辑关系&#xff1a;is-a多态公有继承 第13章&#xff1a;类继承 一个基类和派生类 从一个类派生出另一个类时&#xff0c;原始类称为基类&am…

怎么通过portainer部署一个vue项目

这篇文章分享一下今天通过docker打包vue项目&#xff0c;并使用打包的镜像在portainer上部署运行&#xff0c;参考了vue-cli和docker的官方文档。 首先&#xff0c;阅读vue-cli关于docker部署的说明 vue-cli关于docker部署的说明https://cli.vuejs.org/guide/deployment.html#…

信创办公–基于WPS的EXCEL最佳实践系列 (数据整理复制粘贴)

信创办公–基于WPS的EXCEL最佳实践系列 &#xff08;数据整理复制粘贴&#xff09; 目录 应用背景操作步骤1、数据查找与替换2、复制或粘贴数据3、使用自动填充工具4、将数据拆分到多列5、应用数字格式 应用背景 数据的整理复制粘贴等在日常的工作中经常使用。本章内容主要学习…

Codeforces Round 665 (Div. 2) (A-F)

A.Problem - A - Codeforces &#xff08;1&#xff09;题意 给你个X轴&#xff0c;初始A点在n这个位置&#xff0c;O在源点0&#xff0c;问你要把B放在哪才能让|AB-BO| k&#xff0c;最小化A需要移动多少次。 &#xff08;2&#xff09;思路 直接分情况套路即可。 &#xff0…

MySQL约束

文章目录 简单介绍主键约束添加单列主键多列主键删除主键 自增长约束(auto_increment)语法&#xff1a;指定自增字段初始值 非空约束唯一约束(unique)默认约束(default)零填充约束(zerofill) 简单介绍 概念&#xff1a;表中数据的约束条件 作用&#xff1a;表在设计的时候加入…

用AI原生向量数据库Milvus Cloud 搭建一个 AI 聊天机器人

搭建聊天机器人 一切准备就绪后,就可以搭建聊天机器人了。 文档存储 机器人需要存储文档块以及使用 Towhee 提取出的文档块向量。在这个步骤中,我们需要用到 Milvus。 安装轻量版 Milvus Lite,使用以下命令运行 Milvus 服务器: (chatbot_venv) [egoebelbecker@ares milvus_…

Python与Scrapy:构建强大的网络爬虫

网络爬虫是一种用于自动化获取互联网信息的工具&#xff0c;在数据采集和处理方面具有重要的作用。Python语言和Scrapy框架是构建强大网络爬虫的理想选择。本文将分享使用Python和Scrapy构建强大的网络爬虫的方法和技巧&#xff0c;帮助您快速入门并实现实际操作价值。 一、Pyt…

QSS之QComboBox

QComboBox在Qt开发过程中经常使用&#xff0c;默认的下载列表风格达不到设计师的要求&#xff0c;本篇介绍基本的QComboBox的qss设置。 属性意思QComboBoxQComboBox基本样式QComboBox:editable右边可选择按钮QComboBox:!editable, QComboBox::drop-down:editable不可编辑或下拉…

从“概念”到“应用”,字节跳动基于 DataLeap 的 DataOps 实践

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 近日&#xff0c;火山引擎数智平台 VeDI Meetup「超话数据」在深圳举办&#xff0c;来自火山引擎的产品专家分享了字节跳动基于 DataLeap 的 DataOps 实践&#xff…

Audacity 使用教程:轻松录制、编辑音频

Audacity 使用教程&#xff1a;轻松录制、编辑音频 1. 简介 Audacity 是一款免费、开源且功能强大的音频录制和编辑软件。它适用于 Windows、Mac 和 Linux 等多种操作系统&#xff0c;适合音乐制作、广播后期制作以及普通用户进行音频处理。本教程将带领大家熟悉 Audacity 的…

管道-匿名管道

一、管道介绍 管道&#xff08;Pipe&#xff09;是一种在UNIX和类UNIX系统中用于进程间通信的机制。它允许一个进程的输出直接成为另一个进程的输入&#xff0c;从而实现数据的流动。管道是一种轻量级的通信方式&#xff0c;用于协调不同进程的工作。 1. 创建和使用管道&#…

机器人中的数值优化|【七】线性搜索牛顿共轭梯度法、可信域牛顿共轭梯度法

机器人中的数值优化|【七】线性搜索牛顿共轭梯度法、可信域牛顿共轭梯度法 Line Search Newton-CG, Trust Region Newton-CG 往期回顾 机器人中的数值优化|【一】数值优化基础 机器人中的数值优化|【二】最速下降法&#xff0c;可行牛顿法的python实现&#xff0c;以Rosenbro…

解决Invalid bound statement (not found)错误~

报错如下所示&#xff1a; 找了好久&#xff0c;刚开始以为是名称哪里写的有问题&#xff0c;但仔细检查了好多遍都不是 最后发现了问题如下所示&#xff1a; UserMapper里面的内容被我修改了&#xff0c;但classes中的内容还是原来的内容&#xff0c;所以才导致了编译器报错n…

【计算机网络】HTTP协议详解(举例解释,超级详细)

文章目录 一、HTTP协议简单介绍 1、1 什么是HTTP协议 1、2 再次理解“协议” 二、HTTP请求 2、1 HTTP的工作过程 2、1、1 demo代码 2、2 URL 介绍 2、2、1 urlencode 和 urldecode 2、3 HTTP 请求格式 三、HTTP响应 3、1 响应demo 3、2 HTTP 响应格式 四、HTTP 请求和响应中的…

【改进哈里鹰算法(NCHHO)】使用混沌和非线性控制参数来提高哈里鹰算法的优化性能,解决车联网相关的路由问题(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

ENVI报错:SaveRasterFile failed:IDLnaMetadata Error

ENVI报错&#xff1a;SaveRasterFile failed:IDLnaMetadata Error 问题描述 ENVI在另存为为TIFF文件时&#xff0c;报了下面这个错误信息 原因 输出路径或者是存放影像的路径里面包含中文&#xff0c;不能包含中文 解决方案 把所有相关路径中的中文改成英文

嵌入式学习笔记(42)SD卡的编程接口

8.3.1 SD卡的物理接口 SD卡由9个针脚与外界进行物理连接&#xff0c;这9个脚中有2个地&#xff0c;1个电源&#xff0c;6个信号线。 8.3.2 SD协议与SPI协议 (1)SD卡与SRAM/DDR/SROM之类的东西的不同&#xff1a;SRAM/DDR/SROM之类的存储芯片是总线式的&#xff0c;只要连接上…

深入学习git

1、git原理及整体架构图 一些常用的命令 git add . 或 git add src/com/ygl/hello/hello.java 指定文件 git commit . 或 git commit src/com/ygl/hello/hello.java 指定文件 git push origin 分支名称 2、git stash的应用场景 场景一&#xff1a;你正在当前分支A开发&…