python基础逻辑回归、重塑数据形状‌及相关准确值和预测值

发布于:2025-04-15 ⋅ 阅读:(28) ⋅ 点赞:(0)

举个栗子🌰

假设你有一个包含用户信息的表格数据(如 CSV 文件),结构如下表1.1:(判断用户“是否会购买”这个问题)                     

预估薪资(元) 是否会购买 年龄 性别
5000 25
8000 30
3000 22

                                                               表1.1

一、算法测试

划分特征X于y(字段名:是否会购买)

X = data[’预估薪资’],y = data['是否会购买']‌

1. 代码意义

这两行代码的作用是 ‌从数据集中提取特征变量(X)和目标变量(y)‌,为机器学习模型的训练和预测做准备。

  • X = data['预估薪资']‌:
    从数据集 data 中提取名为 预估薪资 的列作为 ‌特征(Feature)‌,即模型的输入变量。例如,用户的收入水平可能影响其购买决策。

  • y = data['是否会购买']‌:
    从数据集 data 中提取名为 是否会购买 的列作为 ‌目标(Target)‌,即模型的输出变量。这是一个二分类标签(如“是”或“否”),表示用户最终是否购买了产品。


2. 使用场景

  • 监督学习任务‌:通过历史数据(特征 X 和标签 y)训练模型,预测新用户的购买行为。
  • 分类模型‌:如逻辑回归、决策树、随机森林等,用于解决“是否会购买”这类二分类问题。

3. 用法步骤 

(1) 数据准备,如表1.1

(2) 提取特征和目标

import pandas as pd

# 加载数据集(假设 data 是 DataFrame)

data = pd.read_csv("user_data.csv")

# 提取特征(X)和目标(y)

X = data['预估薪资'] # 一维特征(薪资)

y = data['是否会购买'] # 二分类目标(是/否)

(3) 数据预处理
  • 目标变量编码‌:将“是/否”转换为数值(1/0)。

    y = y.map({'是': 1, '否': 0}) # 转换为 1 和 0

  • 特征工程‌:如果使用单个特征(薪资)效果不佳,可以添加其他特征(如年龄、性别)。

    X = data[['预估薪资', '年龄', '性别']] # 多特征

  • X['性别'] = X['性别'].map({'男': 1, '女': 0}) # 性别编码

(4) 训练模型

以逻辑回归为例:

4. 完整代码示例

5. 重塑数据形状

 ‌1. 代码

  • reshape(-1, 1)‌:
    将数据从 ‌一维数组‌(例如 [1, 2, 3, 4])转换为 ‌二维数组‌(例如 [, , , ]),即每个样本作为一个行向量。

    • -1‌ 表示自动计算该维度的大小(总样本数不变)。
    • 1‌ 表示每个样本有 1 个特征(单变量数据)。
  • .values‌:
    如果 X_train 或 X_test 是 Pandas DataFrame 或 Series,.values 会将其转换为 NumPy 数组。


2. 使用场景

当你的数据是 ‌单变量(只有 1 个特征)‌,但模型要求输入为二维数组时,必须进行此操作。例如:

  • Scikit-learn 模型‌(如 LinearRegressionSVM)要求输入形状为 (n_samples, n_features)
  • 若直接使用一维数据会报错:ValueError: Expected 2D array, got 1D array instead
示例数据

 

3. 用法示例

(1) 数据准备

 

(2) 重塑数据形状

(3) 训练模型

重塑数据形状总结

  • 用途‌:将一维数据转换为二维,满足模型输入要求。
  • 核心方法‌:reshape(-1, 1)
  • 适用场景‌:单变量数据(如时间序列预测、单特征回归/分类)。

6. 注意事项

  1. 特征维度‌:

    • 单个特征(如薪资)需用 .reshape(-1, 1) 转为二维数组((n_samples, 1))。
    • 多特征(如薪资+年龄+性别)直接使用 data[['列1', '列2']] 提取即可。
  2. 数据维度检查‌:
    使用 X_train.shape 确认数据形状,避免不必要的重塑:

  3. ‌‌不要滥用 reshape‌:

    • 如果数据本身就是二维的(例如多变量数据),无需此操作。
    • 错误使用会破坏数据结构,例如将 (100, 2) 强行转为 (200, 1)
  4. 数据类型‌:

    • 确保特征为数值型(如薪资、年龄),非数值型数据(如性别)需编码(如男=1,女=0)。
  5. 分类平衡‌:

    • 如果“是”和“否”样本数量差异大(如 90% 是“否”),模型可能偏向多数类,需使用过采样(如 SMOTE)或调整类别权重。

     6.‌Pandas 与 NumPy 转换‌:
           1.如果数据已经是 NumPy 数组,直接使用 .reshape(),无需 .values

              X_train = X_train.reshape(-1, 1)

     7.多变量数据‌:
          1. 如果数据是多变量(例如 (n_samples, 3)),无需额外处理,直接输入模型即可。


总结

  • 代码核心目的‌:为机器学习模型准备输入(X)和输出(y)数据。
  • 典型应用‌:用户行为预测、市场营销分析等二分类问题。
  • 扩展性‌:可添加更多特征(如年龄、浏览历史)提升模型效果。‌

网站公告

今日签到

点亮在社区的每一天
去签到