用python实现将学生17门课程成绩csv对学生的物理课程期末成绩进行数据标准化函数,min-max分别将最低、最高映射为0-1和60-100(两个子函数)、Z-score标准化、sigmod标准化。
时间: 2024-09-13 10:03:44 浏览: 47
在Python中,我们可以创建三个函数来实现不同的数据标准化方法:
1. **最小最大规范化(Min-Max Scaling)**:
```python
def min_max_scale(data, min_val, max_val):
"""
将数据按指定范围进行缩放,最小值映射到0,最大值映射到1
:param data: 待处理的学生物理课程成绩列表
:param min_val: 数据集中的最小值(物理课程最低分)
:param max_val: 数据集中的最大值(物理课程最高分)
:return: 标准化后的成绩列表
"""
return [(x - min_val) / (max_val - min_val) for x in data]
# 示例:
physic_scores = [95, 88, 75, ...] # 假设这是学生的物理成绩
normalized_physics_mm = min_max_scale(physic_scores, 0, 100)
```
2. **Z-Score标准化**:
```python
import numpy as np
def z_score_standardization(data, mean, std_dev):
"""
使用z-score公式对数据进行标准化
:param data: 待处理的学生物理课程成绩列表
:param mean: 数据集的平均值
:param std_dev: 数据集的标准差
:return: Z-Score标准化后的成绩列表
"""
return (data - mean) / std_dev
# 示例:
mean_physics = np.mean(physic_scores)
std_dev_physics = np.std(physic_scores)
normalized_physics_zscore = z_score_standardization(physic_scores, mean_physics, std_dev_physics)
```
3. **Sigmoid标准化(Logistic变换)**:
```python
import math
def sigmoid_scale(data, low=0, high=1):
"""
应用Sigmoid函数对数据进行非线性标准化
:param data: 待处理的学生物理课程成绩列表
:param low: 变换后的数据下限
:param high: 变换后的数据上限
:return: Sigmoid标准化后的成绩列表
"""
return 1 / (1 + math.exp(-((data - data.min()) * (high - low)) / (data.max() - data.min()))) * (high - low) + low
# 示例:
sigmoid_normalized_physics = sigmoid_scale(physic_scores, 60, 100)
```
每个函数都接受物理课程的成绩数据作为输入,并返回相应的标准化结果。你可以根据需要选择合适的标准化方法。
阅读全文