数据预处理(2)—— One-hot coding 独热编码#分别使用 pandans.dummies 和 sklearn.feature_extraction.DictVectorizer 进行处理

离散 feature 的 encoding 分为两种情况:

1、离散 feature 的取值之间没有大小的意义,比如color:[red,blue],那么就使用 one-hot encoding

2、离散 feature 的取值有大小的意义,比如size:[X,XL,XXL],那么就使用数值的映射{X:1,XL:2,XXL:3}


In [90]:
 
import numpy as np
import pandas as pd
from pandas import Series, DataFrame
np.set_printoptions(precision=4)
×
In [91]:
 
df = pd.DataFrame([  
            ['green', 'M', 10.1, 'class1'],   
            ['red', 'L', 13.5, 'class2'],   
            ['blue', 'XL', 15.3, 'class1']])  
df.columns = ['color', 'size', 'prize', 'class label']  
df
×
Out[91]:
color size prize class label
0 green M 10.1 class1
1 red L 13.5 class2
2 blue XL 15.3 class1
In [92]:
### 使用TF-IDF特征构建SVM模型并返回准确率预测结果 以下是一个完整的代码实现,基于`trainX_txt`, `Y`, `testX_txt`数据集,使用`sklearn`库计算TF-IDF特征,划分80%训练集20%测试集,构建支持向量机(SVM)模型,并返回模型的准确率以及对`testX_txt`的预测结果。 ```python from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.model_selection import train_test_split from sklearn.svm import SVC from sklearn.metrics import accuracy_score # 定义函数:计算TF-IDF特征并构建SVM模型 def build_svm_model(trainX_txt, Y, testX_txt): # 初始化TF-IDF向量器 tfidf_vectorizer = TfidfVectorizer(max_df=0.8, min_df=3, max_features=200) # 设置参数[^3] # 将训练文本转换为TF-IDF特征矩阵 trainX_tfidf = tfidf_vectorizer.fit_transform(trainX_txt).toarray() # 转换训练集 # 将测试文本转换为TF-IDF特征矩阵 testX_tfidf = tfidf_vectorizer.transform(testX_txt).toarray() # 转换测试集 # 划分训练集验证集(80%训练集,20%测试集) X_train, X_val, Y_train, Y_val = train_test_split( trainX_tfidf, Y, test_size=0.2, random_state=42 # 划分数据集[^2] ) # 初始化SVM模型 svm_model = SVC(kernel='linear', C=1.0, random_state=42) # 构建SVM模型[^1] # 训练SVM模型 svm_model.fit(X_train, Y_train) # 训练模型[^1] # 在验证集上进行预测 Y_val_pred = svm_model.predict(X_val) # 验证集预测[^1] # 计算模型在验证集上的准确率 val_accuracy = accuracy_score(Y_val, Y_val_pred) # 计算准确率[^1] # 对测试集进行预测 testX_pred = svm_model.predict(testX_tfidf) # 测试集预测[^1] return val_accuracy, testX_pred # 返回验证集准确率测试集预测结果 # 示例调用 # 假设trainX_txt, Y, testX_txt已定义 # accuracy, predictions = build_svm_model(trainX_txt, Y, testX_txt) # print("验证集准确率:", accuracy) # print("测试集预测结果:", predictions) ``` ### 说明 - TF-IDF特征提取通过`TfidfVectorizer`完成,设置参数如`max_df`、`min_df``max_features`来控制特征选择。 - 数据集划分为80%训练集20%验证集,确保模型的泛化能力。 - 使用线性核的支持向量机(SVM)模型进行分类任务[^1]。 - 模型的性能通过验证集上的准确率评估[^1]。 - 最终返回验证集的准确率以及对`testX_txt`的预测结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值