分别使用自编函数和调用库函数的方式实现如下两题: 实现三种数据标准化函数,min-max分别将最低、最高映射为0-1和60-100(两个子函数)、Z-score标准化、sigmod标准化。
时间: 2024-09-12 16:17:51 浏览: 56
不使用内置函数的直方图均衡化:直方图均衡化-matlab开发
在Python中,我们可以使用自编函数和标准库函数结合的方式来实现这三种数据标准化方法。
**1. 自编函数实现:**
```python
def min_max_scale(data, min_val=0, max_val=1):
scaled_data = (data - data.min()) / (data.max() - data.min())
return scaled_data * (max_val - min_val) + min_val
def min_max_60_to_100_scale(data):
scaled_data = min_max_scale(data, 60, 100)
return scaled_data
def z_score_standardization(data):
std_dev = data.std()
mean = data.mean()
if std_dev != 0:
return (data - mean) / std_dev
else:
print("Warning: Zero standard deviation encountered.")
# 由于sigmoid不是简单的线性变换,需要使用math库或其他库实现
import math
def sigmoid_scale(data):
return 1 / (1 + math.exp(-data))
```
**2. 库函数调用:**
Python标准库`scikit-learn`中有现成的预处理工具,可以简化实现:
```python
from sklearn.preprocessing import MinMaxScaler, StandardScaler, FunctionTransformer
def min_max_60_to_100_scale_with_sklearn(data):
scaler = MinMaxScaler(feature_range=(60, 100))
return scaler.fit_transform(data)
def z_score_standardization_with_sklearn(data):
scaler = StandardScaler()
return scaler.fit_transform(data)
# 对于sigmoid,虽然sklearn没有直接提供,但仍可以用numpy等库的函数实现
import numpy as np
def sigmoid_scale_numpy(data):
return 1 / (1 + np.exp(-data))
```
**
阅读全文