Baseline Models

本文介绍了两种基本的机器学习预测方法:随机预测算法和零规则算法,前者通过随机选择训练集中的输出值进行预测,后者则依据训练集中最常见的类别或平均数值进行预测。

Chapter 5

Baseline Models

随机预测算法

# Example of Making Random Predictions 
from random import seed 
from random import randrang

# Generate random predictions 
def random_algorithm(train, test): 
	output_values = [row[-1] for row in train] #[0,1,0,1,0,1]
	unique = list(set(output_values)) #[0,1]
	predicted = list() 
	for row in test: 
		index = randrange(len(unique)) #0 or 1
		predicted.append(unique[index]) 
	return predicted
	
seed(1) 
train = [[0], [1], [0], [1], [0], [1]] 
test = [[None], [None], [None], [None]] 
predictions = random_algorithm(train, test) 
print(predictions)

结果

[0,0,1,0]

零规则算法

# Example of Zero Rule Classification Predictions 
from random import seed

# zero rule algorithm for classification 
def zero_rule_algorithm_classification(train, test): 
	output_values = [row[-1] for row in train] 
	prediction = max(set(output_values), key=output_values.count) #0,返回的是数量做多的
	predicted = [prediction for i in range(len(test))] 
	return predicted
seed(1) 
train = [['0'], ['0'], ['0'], ['0'], ['1'], ['1']] 
test = [[None], [None], [None], [None]] 
predictions = zero_rule_algorithm_classification(train, test) 
print(predictions)

结果:

['0', '0', '0', '0']

回归

在这里插入图片描述

# Example of Zero Rule Regression Predictions 
from random import seed

# zero rule algorithm for regression 
def zero_rule_algorithm_regression(train, test): 
	output_values = [row[-1] for row in train] 
	prediction = sum(output_values) / float(len(output_values)) 
	predicted = [prediction for i in range(len(test))] 
return predicted

seed(1) 
train = [[10], [15], [12], [15], [18], [20]] 
test = [[None], [None], [None], [None]] 
predictions = zero_rule_algorithm_regression(train, test) 
print(predictions)

结果:

[15.0, 15.0, 15.0, 15.0]
#一 # 导入数据 import pandas as pd file_path = r"D:\Jiqixuexi\塑性铰案例\数据.CSV" data = pd.read_csv(file_path, encoding='ISO-8859-1') #二 #查看数据情况 from pandas import set_option #前5行打印 print(data.head()) # 数据维度 print(type(data),data.shape) # 特征属性的字段类型 print(data.dtypes) # 描述性统计信息 set_option('display.precision', 1) print(data.describe()) # 关联关系 设置显示精度并计算皮尔逊相关系数矩阵 set_option('display.precision', 2) print(data.corr(method='pearson')) #三数据可视化 import numpy as np from numpy import arange from matplotlib import pyplot import matplotlib.pyplot as plt from pandas.plotting import scatter_matrix # 单一特征图表 # 直方图 data.hist(sharex=False, sharey=False, xlabelsize=10, ylabelsize=10, figsize=(12,10),layout=(4,4)) pyplot.savefig('1_hist.png') #保存图片 pyplot.show() # 密度图 data.plot(kind='density', subplots=True, layout=(4,4), sharex=False, fontsize=1) pyplot.show() # 箱线图 data.plot(kind='box', subplots=True, layout=(4,4), sharex=False, sharey=False, fontsize=8) pyplot.show() #scatter_matrix() - 散点图矩阵,可以一次性查看多个变量之间的两两关系 scatter_matrix(data) pyplot.show() #分离数据集 from sklearn.model_selection import train_test_split from sklearn.model_selection import KFold from sklearn.model_selection import cross_val_score array = data.values X=array[:, 0:7] Y=array[:, 7] validation_size=0.2 # 20%的数据用于评估 seed=7 X_train, X_validation, Y_train, Y_validation = train_test_split(X, Y, test_size=validation_size, random_state=seed) #4.1使用原始数据做模型 # 评估算法——评估标准 num_folds=5 # 10折交叉验证 seed=7 scoring='neg_mean_squared_error' # negative MSE评价结果,不是用MSE,是为了与损失函数的规则保持一致 # 一次使用6种算法做模型 from sklearn.linear_model import LinearRegression from sklearn.linear_model import Lasso from sklearn.linear_model import ElasticNet from sklearn.tree import DecisionTreeRegressor from sklearn.neighbors import KNeighborsRegressor from sklearn.svm import SVR ###### 建模1:用原始数据做分析 # 评估算法- baseline models={} models['LR']=LinearRegression() models['LASSO']=Lasso() models['EN']=ElasticNet() models['KNN']=KNeighborsRegressor() models['CART']=DecisionTreeRegressor() models['SVM']=SVR() # 评估算法 results = [] print("原始数据分析后的结果:") for key in models: kfold = KFold(n_splits=num_folds, shuffle=True, random_state=seed) # 构造交叉验证,必要参数:n_splits交叉验证折数、shuffle是否随机打乱数据、random_state随机数种子 cv_result = cross_val_score(models[key], X_train, Y_train, cv=kfold, scoring=scoring) # 计算交叉验证评分,必要参数:models[key]模型,X_train特征值、Y_train目标变量、cv交叉验证方法、scoring评分结果 results.append(cv_result) print('%s: %f(%f)' % (key, cv_result.mean(), cv_result.std())) # 6组结果,每组10个,查看均值、标准差 print()
最新发布
10-12
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值