请使用numpy,而不是直接使用sklearn中的类。实现任意两种数据缩放算法。(StandardScaler、RobusScaler、MinMaxScaler、Normalizer)。
时间: 2024-09-29 08:13:06 浏览: 32
numpy-使用numpy实现的机器学习算法之SVM.zip
在Python中,我们可以使用NumPy库来实现数据预处理的一些基本操作,包括数据缩放。以下是使用NumPy实现StandardScaler和MinMaxScaler这两种常见的数据缩放算法的例子:
```python
import numpy as np
# StandardScaler (z-score标准化)
def standard_scaler(data):
mean = np.mean(data, axis=0)
std_dev = np.std(data, axis=0)
return (data - mean) / std_dev
# MinMaxScaler (最小最大规范化)
def min_max_scaler(data):
data_min = np.min(data, axis=0)
data_range = np.max(data, axis=0) - data_min
return (data - data_min) / data_range
# 注意,NumPy本身并不直接提供类似sklearn的RobustScaler和Normalizer,它们需要额外的步骤或借助其他库如scikit-learn或pip install statsmodels。
# 对于RobustScaler,可以使用如下方式手动实现:
def robust_scaler(data):
q1 = np.percentile(data, 25, axis=0)
q3 = np.percentile(data, 75, axis=0)
iqr = q3 - q1
scale = 1.5 * iqr / (np.median(np.abs(data - np.median(data, axis=0)), axis=0))
offset = q1
return (data - offset) / scale
# Normalizer(归一化到单位长度)
def normalizer(data):
norms = np.linalg.norm(data, axis=1)
return data / norms[:, np.newaxis]
# 使用示例:
# 假设我们有二维数据array
data = np.random.rand(1000, 50)
standard_data = standard_scaler(data)
min_max_data = min_max_scaler(data)
```
阅读全文