使用Dask-ML MinMaxScaler触发AttributeError,求解决方法
解决Dask-ML MinMaxScaler的AttributeError错误
这个错误的核心原因是:dask-ml的MinMaxScaler要求输入是二维数据结构,但你传入的df['M']是一维的Dask Series,内部处理时被转换为Scalar类型,导致触发copy属性不存在的错误。
修复方法很简单,只需要把一维的Series转换成二维的DataFrame即可,有两种常用方式:
方式1:使用双重方括号选取列
直接用df[['M']]替代df['M'],这样得到的是包含单列的Dask DataFrame(二维结构):
import dask.dataframe as dd from dask_ml.preprocessing import MinMaxScaler df = dd.read_csv('path to csv', parse_dates=['CREATED_AT'], dtype={'ODI_UPDATED_AT': 'object'}) scaler = MinMaxScaler() # 用双重方括号获取二维DataFrame result = scaler.fit_transform(df[['M']]) print(result.compute()) # Dask对象需调用compute()触发计算才能拿到实际结果
方式2:用to_frame()转换Series为DataFrame
如果已经拿到了Series对象,可以调用to_frame()方法将其转为DataFrame:
import dask.dataframe as dd from dask_ml.preprocessing import MinMaxScaler df = dd.read_csv('path to csv', parse_dates=['CREATED_AT'], dtype={'ODI_UPDATED_AT': 'object'}) scaler = MinMaxScaler() # 转换Series为DataFrame col_df = df['M'].to_frame() result = scaler.fit_transform(col_df) print(result.compute())
内容的提问来源于stack exchange,提问作者Saeide
相关产品推荐
相关产品推荐

