import sklearn.preprocessing as sp
import numpy as np
# # 1. 一组数据:[160, 170, 180, 190],你希望它们变成平均值是 0,数值范围波动差不多的格式。你用什么方法?
# data = np.array([[160], [170], [180], [190]])
# scaler = sp.StandardScaler()
# scaler_data = scaler.fit_transform(data)
# print(scaler_data)
# # 2. 一组像素数据:[0, 128, 255],你想把它们压缩到 0~1 的范围内,适合输入神经网络。你应该用什么方法?
# data = np.array([[0],[128],[255]])
# scaler = sp.MinMaxScaler()
# scaler_data = scaler.fit_transform(data)
# print(scaler_data)
# # 3. 一组收入:[3000, 6000, 9000],你不在乎具体值,只在乎是否“超过5000”,你会怎么处理?
# # data = np.array([[3000],[6000],[9000]])
# # scaler = sp.Binarizer(threshold=5000)
# # scaler_data = scaler.fit_transform(data)
# # print(scaler_data)
# # 4. 城市字段:[“北京”, “上海”, “广州”, “北京”],想喂给机器学习模型用,不能直接用文字,你要怎么处理?
# data = np.array([['北京'],['上海'],['广州'],['北京']])
# scater = sp.OneHotEncoder(sparse_output=False)
# scater_data = scater.fit_transform(data)
# print(scater_data)
# scater_data_decode = scater.inverse_transform(scater_data)
# print(scater_data_decode)
# # 5. 特征矩阵:[[1, 2], [3, 4], [5, 6]],每一行表示一个人的行为特征,模型要求“每一行长度为1(单位化)”,你怎么做?
# # ⸻
# # 6. 一组年龄数据:[18, 35, 60, 80],最大值和最小值相差太大,模型不收敛了。你会用什么方法?
# data = np.array([[18],[35],[60],[80]])
# scater = sp.StandardScaler()
# scater_data = scater.fit_transform(data)
# print(scater_data)
# # 7. 有一组特征:[10, 1000],你觉得 1000 太大了,会影响模型判断。如何让两个特征“在一个级别上”?
# data = np.array([[10],[1000]])
# scater = sp.StandardScaler()
# scater_data = scater.fit_transform(data)
# print(scater_data)
# # 8. 用户性别数据:[“男”, “女”, “男”, “女”],你不想让模型误会“男=1,女=2 有大小关系”,你怎么编码?
# # 我大概知道这里得用独热编码
# # 9. 一组成绩:[40, 65, 90],你只想知道谁及格了(60分及格),只关心“是否通过”,该用什么方法?
# data = np.array([[40],[65],[90]])
# scater = sp.Binarizer(threshold=60)
# scater_data = scater.fit_transform(data)
# print(scater_data)
# # 10. 数据:[1.2, 3.4, 5.6, 7.8],你发现它们的单位是“千米”,但另一列是“厘米”,量级相差太大,怎么办?
# data = np.array([[1.2],[3.4],[5.6],[7.8]])
# scater = sp.StandardScaler()
# scater_data = scater.fit_transform(data)
# print(scater_data)
0625 练习