文章目录
sklearn 算法结构整理
代码结构
导入数据包
from sklearn.datasets import **
预处理包
from sklearn.model_selection import train_test_split
from sklearn.model_selection import GridSearchCV
from sklearn.preprocessing import StandardScaler # 数据标准化
from sklearn.feature_extraction.text import TfidfVectorizer # tf_idf文本特征提取模块
导入算法模块
根据数据集特征选择合适的算法,算法参数可使用网格搜索或手动调试
from sklearn.neighbors import KNeighborsClassifier # k近邻算法
from sklearn.naive_bayes import MultinomialNB # 多项式贝叶斯算法
from sklearn.tree import DecisionTreeClassifier, export_graphviz # 决策树、决策树可视化
from sklearn.linear_model import LinearRegression, SGDRegressor, Ridge # 逻辑回归、梯度下降、岭回归
导入结果评估模块(选用)
from sklearn.metrics import mean_squared_error # 均方误差
数据规范化(预处理)
# 缺失值处理
x["age"].fillna(x["age"].mean(), inplace=True)
# 标准化
transfer = StandardScaler()
x_train = transfer.fit_transform(x_train)
x_test = transfer.transform(x_test)
划分数据集
将 数据集 和对应目标集划分成 训练集和测试集
x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, random_state=22) # random_state随机种子起点
特征工程:标准化
transfer = StandardScaler()
x_train = transfer.fit_transform(x_train)
# 测试集要用训练集同样的fit值来标准化数据,所以直接transform,
x_test = transfer.transform(x_test)
实例化相关算法
# 实例化转换器类
# 1.指定k值
estimator = KNeighborsClassifier(n_neighbors=3)
# 2.网格搜索参数算法选择k值
estimator = KNeighborsClassifier()
网格搜索与k折交叉验证(选用)
# 参数准备
param_dict = {"n_neighbors": [1, 3, 5, 7, 9, 11]}
estimator = GridSearchCV(estimator, param_grid=param_dict, cv=10) # 数据量大时cv可调小以防止时间过长
算法估计器拟合数据集
estimator.fit(x_train, y_train) # 训练数据集
估计器输出
# 1.直接比对
y_predict = estimator.predict(x_test) # 用训练后的结果测试数据
print("y_predict:\n", y_predict)
print("直接比对真实值和预测值:\n", y_test == y_predict)
# 2.计算准确率
score = estimator.score(x_test, y_test) # 对应于训练数据estimator.fit(x_train, y_train)
print("准确率为:\n", score)
模型计算误差计算
error = mean_squared_error(y_test, y_predict)
print("正规方程均方误差为;\n", error)
``
### 模型计算误差计算
```python
error = mean_squared_error(y_test, y_predict)
print("正规方程均方误差为;\n", error)