You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用sklearn.preprocessing时遭遇Python语法错误求助

解决你的语法错误问题

看起来你遇到的语法错误其实是由前面代码的两处问题导致的,Python解析器报错的位置可能会有点误导人,我们来一步步修复:

错误根源分析

  1. 列名大小写错误:你在代码里用了['Label'],但实际DataFrame里的列是小写的label(你之前定义的是df['label'] = df[forecast_col].shift(-forecast_out)),大小写不匹配会引发KeyError,同时还伴随语法问题。
  2. 语法缺失(闭合括号):y = np.array(df.drop(['Label'])这一行缺少了闭合的右括号,而且这里的逻辑也不对——你应该提取label列作为目标变量y,而不是drop掉它。

修正后的关键代码段

# 修正X的定义:使用正确的小写列名,确保语法完整
X = np.array(df.drop(['label'], 1))
# 修正y的定义:直接提取label列,语法正确
y = np.array(df['label'])
X = preprocessing.scale(X)

完整修正后的代码

import quandl
import pandas as pd
import numpy as np
import math
from sklearn import preprocessing, svm, model_selection
from sklearn.linear_model import LinearRegression

df = quandl.get('WIKI/GOOGL')
df = df[['Adj. Open', 'Adj. High', 'Adj. Low', 'Adj. Close', 'Adj. Volume']]
df['HL_PT'] = (df['Adj. High'] - df['Adj. Low']) / df['Adj. Close'] * 100
df['PT_Change'] = (df['Adj. Close'] - df['Adj. Open']) / df['Adj. Open'] * 100
df = df[['Adj. Close', 'HL_PT', 'PT_Change', 'Adj. Volume']]

forecast_col = 'Adj. Close'
df.fillna(-99999, inplace=True)
forecast_out = int(math.ceil(0.01 * len(df)))
print(forecast_out)

df['label'] = df[forecast_col].shift(-forecast_out)
df.dropna(inplace=True)

# 修正后的X和y定义
X = np.array(df.drop(['label'], 1))
y = np.array(df['label'])
X = preprocessing.scale(X)

print(forecast_out)

额外说明

  • 你提到把cross validation替换为model_selection是正确的,sklearn中原来的cross_validation模块已经被整合到model_selection里了,这部分没问题。
  • Python的语法错误有时候会在后续行报错,这是因为解析器在处理前面错误的代码时,无法正确识别后续代码的结构,所以遇到这种情况要先检查报错行前面的代码是否有语法问题,比如括号不匹配、引号未闭合等。

内容的提问来源于stack exchange,提问作者Pranav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:27:09