机器学习-线性回归_一些常用的函数

import numpy as np

np.dot

np.dot是NumPy库中的一个函数,用于计算两个数组的点积(dot product)。点积是一种特殊的矩阵乘法运算,用于计算两个向量的内积或者矩阵的乘法。

np.dot可以接受两个参数,

若两个参数中至少有一个是二维数组,np.dot会根据矩阵乘法的规则进行计算,返回矩阵乘积的结果;

若两个参数都是一维数组,则返回两个向量的内积结果。

如果两个参数其中有个数,那么就代表这个数和一个矩阵相乘

数据抽样

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

data = pd.read_csv('../data/world-happiness-report-2017.csv')
train_data = data.sample(frac = 0.8)
test_data = data.drop(train_data.index)

pandas.read_csv,用于读取CSV(逗号分隔值)文件到一个Pandas DataFrame对象中,

DataFrame它是一个二维的表格数据结构,类似于电子表格或SQL中的表,可以存储和操作具有不同数据类型的数据。

train_data = data.sample(frac = 0.8)
data.sample函数是Pandas库中DataFrame对象的一个方法,用于从DataFrame中随机选择一部分数据进行抽样。从data DataFrame中抽样的80%训练数据。

data.drop方法来实现这data 中除train_data以外的剩余数据

特征数据的提取

将数据转换为NumPy数组形式能够更好地利用NumPy库提供的功能和性能,便于进行高效的科学计算和数据处理。

my_list = [1, 2, 3, 4, 5]
my_array = np.array(my_list)
print(my_array)
[1 2 3 4 5]

 numpy数组形式:[1 2 3 4 5]  中间没有逗号隔开

x_train = train_data[[input_param_name]].values
x_train = train_data[input_param_name]
print(x_train)
x1_train = train_data[[input_param_name]].values
print(x1_train)
x2_train = train_data[input_param_name].values
print(x2_train)

我思考了一下: 

第一种 是 返回一个表

第二种是返回一个只有一列矩阵 二维数组形式

第三种这种方式将返回一个一维的NumPy数组形式的数据。

使用双层方括号[[]]来进行列选择,可以保持x_train的维度为二维数组,即使只选择了单个列。这有助于在处理多个特征时保持一致性,可以很容易地与其他特征进行合并或处理。

用matplotlib.pyplot 画出测试集与训练集分布

# import matplotlib.pyplot as plt
plt.scatter(x_train,y_train,label='Train data')
plt.scatter(x_test,y_test,label='test data')
plt.xlabel(input_param_name)
plt.ylabel(output_param_name)
plt.title('Happy')
plt.legend()
plt.show()

使用plt.scatter()函数绘制训练数据和测试数据的散点图,label参数用于标注数据的类别。

其中x_trainy_train代表训练数据的输入参数和输出参数x_testy_test代表测试数据的输入参数和输出参数。

使用plt.xlabel()plt.ylabel()设置x轴和y轴的标签,使用plt.title()设置图表的标题。

使用plt.legend()添加图例,用于表示不同数据的标识。使用plt.show()显示图形。

 开始训练

 (theta,cost_history) = linear_regression.train(learning_rate,num_iterations)

得到训练之后的theta向量 以及每次迭代变化的损失之列表

plt.plot(range(num_iterations),cost_history)

range(num_iterations)用于创建一个包含从0到num_iterations-1的整数序列,作为x轴表示迭代次数,也就是说x轴一共有num_iterations点,每个点对应每次迭代之后产生的损失值

plt.plot()函数是Matplotlib库用于绘制折线图的函数,将range(num_iterations),cost_history两个列表或数组的点连接起来

进行预测

predictions_num = 100
x_predictions = np.linspace(x_train.min(),x_train.max(),
                                predictions_num).reshape(predictions_num,1)

使用np.linspace()函数创建一个从x_train的最小值到最大值之间的等间隔的数组,这个数组包含了要预测的数据点的x坐标。

使用reshape()函数将数组转换为形状为(predictions_num, 1)的二维数组

数据的预处理部分

features_normalized = np.copy(features).astype(float)

np.copy()函数是NumPy库中的一个函数,用于创建数组的深拷贝。它接受一个数组作为参数,并返回该数组的副本

astype(float) 将副本数组的元素类型转换为浮点型。

np.mean(features, 0)被用来计算列向量features的均值。

np.std(features, 0)被用来计算列向量features的标准差。

第二个参数0表示对轴0进行计算,也就是对列进行计算,若第二个参数1表示对轴1进行计算,即对行进行计算。

np.ones((num_examples, 1))创建了一个形状为 (num_examples, 1) 的全为1的列向量。

np.hstack((np.ones((num_examples, 1)), data_processed)) 

使得预处理数据扩展一列且data_processed从第二列开始

过拟合 在训练集上好 测试集上性能较差

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值