QSVC的fit函数是否要求参数为浮点型?类型错误求助
解决PegasosQSVC.fit()的TypeError问题
错误核心原因
报错TypeError: Invalid parameter values, expected Sequence[Sequence[float]]的根源是输入的特征数据不符合浮点型二维序列要求:
- 你选中的
marital(婚姻状态)、loan(贷款情况)属于分类变量(通常是字符串/离散枚举值),并非浮点类型,量子核函数无法直接处理这类非数值型特征。 - 标签
Y即便为字符串也不会触发该错误,PegasosQSVC内部会自动完成标签编码,无需额外处理。 - 额外隐患:你的
X与Y样本范围不匹配——X取loc[1:1000](行索引1到1000,共1000条),Y取iloc[:1000](行索引0到999,共1000条),两者对应样本完全错位,必须统一。
修复步骤
- 分类特征转浮点型:用独热编码将分类变量转为量子模型可处理的数值特征,避免引入无意义的顺序关系。
- 统一样本范围:确保
X和Y的行索引完全对应。 - 可选规范处理:手动将字符串标签转为数值型(非强制,但能提升代码可读性)。
修改后的完整代码
import pandas as pd import numpy as np from sklearn.model_selection import train_test_split from sklearn.preprocessing import OneHotEncoder from qiskit.circuit.library import ZFeatureMap from qiskit_machine_learning.kernels import FidelityQuantumKernel from qiskit.algorithms.state_fidelities import ComputeUncompute from qiskit.primitives import Sampler from qiskit_machine_learning.algorithms import PegasosQSVC # 读取数据并统一取前1000行样本 data = pd.read_csv('train.csv') sample_data = data.iloc[:1000] # 分离特征与标签 X_raw = sample_data[["marital", "balance", "loan"]] Y = sample_data.iloc[:, -1].values # 对分类特征做独热编码,转为浮点型 encoder = OneHotEncoder(sparse_output=False, drop='first') encoded_cats = encoder.fit_transform(X_raw[["marital", "loan"]]) # 合并编码后的分类特征与数值特征balance X_processed = np.hstack([encoded_cats, X_raw[["balance"]].values]) # 划分训练测试集 x_train, x_test, y_train, y_test = train_test_split(X_processed, Y) # 初始化量子组件 data_feature_map = ZFeatureMap(feature_dimension=X_processed.shape[1], reps=1 ) sampler = Sampler() fidelity = ComputeUncompute(sampler=sampler) data_kernel = FidelityQuantumKernel(fidelity=fidelity, feature_map=data_feature_map) # 训练并评估模型 pegasos_qsvc = PegasosQSVC(quantum_kernel=data_kernel, C=1000, num_steps=100) pegasos_qsvc.fit(x_train, y_train) qsvc_score = pegasos_qsvc.score(x_test, y_test) print(f"QSVC classification test score: {qsvc_score}")
关键修改说明
- 用
OneHotEncoder将marital和loan转为浮点型数组,drop='first'参数避免多重共线性问题。 - 用
iloc[:1000]统一样本范围,确保特征与标签一一对应。 - 用
X_processed.shape[1]动态指定特征维度,避免手动修改数值导致的错误。
内容的提问来源于stack exchange,提问作者Pirateking
相关产品推荐
相关产品推荐

