函数说明:
1. Binarizer(threshold=0.9) 将数据进行二值化,threshold表示大于0.9的数据为1,小于0.9的数据为0
对于一些数值型的特征:存在0还有其他的一些数
二值化指的是:将大于0的特征使用1表示,将等于0的特征还是用0表示
对于二值化操作:使用两种方法
第一种方法:
求出大于等于1的索引值,令这些索引值对应的数值等于1,然后重新构建列
第二种方法:
使用Binarizer(threshold=0.9) 表示大于0.9的数据使用1表示
这里传入的参数需要是二维的,因此需要做维度转换
代码:
数据说明:使用的是歌曲的数据:对歌曲听过的次数做二值化操作,听过大于等于1的次数的设置为1,否者设置为0
import numpy as np import matplotlib.pyplot as plt import matplotlib as mpl import pandas as pd plt.style.reload_library() plt.style.use('classic') # 设置颜色 mpl.rcParams['figure.facecolor'] = (1, 1, 1, 0) # 设置图形大小 mpl.rcParams['figure.figsize'] = (6.0, 4.0) # 设置图形的分辨率 mpl.rcParams['figure.dpi'] = 100 popsong_df = pd.read_csv('datasets/song_views.csv', encoding='utf-8') # 我们对listen_count听歌的次数进行二值化操作, 听过的次数大于等于1的为1,次数为0的为0 # 第一种方法 # listened = popsong_df['listen_count'].copy() # listened[listened >= 1] = 1 # popsong_df['listened'] = listened # print(popsong_df[['listen_count', 'listened']]) # 第二种方法:使用 Binarizer from sklearn.preprocessing import# threshold表示阈值,大于0.9的为1 bin = Binarizer(threshold=0.9) popsong_df['listened'] = bin.transform(popsong_df['listen_count'].values.reshape(-1, 1)) print(popsong_df[['listen_count', 'listened']].iloc[:10])