这道题本质上是一个“文本特征 + 数值特征”的二分类问题,题面已经把特征工程和模型流程规定得非常明确,因此我们只需要严格按题意把整条流水线实现出来即可。
整体流程分为四步:
现有一个文本与数值的混合数据,需要你在仅使用numpy/pandas/scikit-learn的前提下,实现下表所示四段式特征工程+双基模型平均流程,并输出测试集标签。
① Word−level TF− IDF TfidfVectorizer(lowercase=True, stop_words="english",ngram_range=(1,2), sublinear_tf=True)
② Char 3−gram TF− IDF TfidfVectorizer(analyzer="char",ngram_range=(3,3),lowercase=True, sublinear_tf=True)
③ Numeric block 对输入数值特征做 StandardScaler,标准化后每列进行二次多项展开 PolynomialFeatures(degree=2,include_bias=False)
④ Feature 合并 拼接三个特征矩阵,即 hstack([①,②,③]) 得稀疏矩阵
⑤模型 A LogisticRegression(penalty="12",C=1.0,solver="liblinear",max_iter=1000)
⑥模型 B SGDClassifer(loss="log",penalty=”12",alpha=1e−4,max_iter=1000,random_state=42
⑦软投票 将两个模型输出的结果平均权重投票,最终阈值大于 0.5 则标签为 1 ,否则标签为 0
仅一行:
[pred_1,pred_2,...,pred_n]
长度 =[test] 的 JSON 整数数组 (0/1),以空格间隔。
1.所有随机源固定 random_state=42
2.为确保通过测试用例,仅允许使用 numpy/pandas/scikit−learn。
输入
{"train_txt": ["great food and service", "fantastic taste", "delicious pizza", "awesome restaurant", "bad food experience", "awful meal", "terrible service", "horrible taste"],"train_num": [[15.0, 4.8], [12.0, 4.6], [13.5, 4.7], [14.0, 4.9],[9.0, 2.1], [8.5, 2.0], [8.0, 2.2], [9.5, 2.3]],"train_y":[0,0,0,0,1,1,1,1],"test_txt": ["excellent pizza", "terrible meal"],"test_num": [[14.0, 4.7], [8.8, 2.0]]}
输出
[0,1]