python机器学习 实验一 使用最小二乘法进行贷款额度预测

编程入门 行业动态 更新时间:2024-10-26 10:29:35

python机器学习 实验一 使用最小二<a href=https://www.elefans.com/category/jswz/34/1768740.html style=乘法进行贷款额度预测"/>

python机器学习 实验一 使用最小二乘法进行贷款额度预测

python机器学习 实验一 使用最小二乘法进行贷款额度预测


求解:当工资18000、年龄30时,额度是多少?给出代码与运行结果图

代码:

from mpl_toolkits.mplot3d import Axes3D
from pylab import mpl
import matplotlib.pyplot as plt#多元函数是空间问题不再是平面问题,因此要用到三维画图#导入数据源
x1 = [4000, 8000, 5000, 7500, 12000]
x2 = [25, 30, 28, 33, 40]
y = [20000, 70000, 35000, 50000, 85000]#计算二元表达式的参数,根据最小二乘法表达式计算,推出各个参数
def multivariatel_fitting(x1, x2, y):size = len(x1)sum_x1 = 0sum_x2 = 0sum_square_x1 = 0sum_square_x2 = 0sum_x1x2 = 0sum_y = 0sum_x1y = 0sum_x2y = 0i = 0while i < size:sum_x1 += x1[i]sum_x2 += x2[i]sum_y += y[i]sum_x1y += x1[i] * y[i]sum_x2y += x2[i] * y[i]sum_x1x2 += x1[i] * x2[i]sum_square_x1 += x1[i] * x1[i]sum_square_x2 += x2[i] * x2[i]i += 1return [[size, sum_x1, sum_x2, sum_y], [sum_x1, sum_square_x1, sum_x1x2, sum_x1y], [sum_x2, sum_x1x2, sum_square_x2, sum_x2y]]#将各个参数带入表达式,计算出来表达式的参数
def calculate_parameter(data):# i用来控制列元素,line是一行元素,j用来控制循环次数,datas用来存储局部变量。保存修改后的值i = 0j = 0line_size = len(data)# 将行列式变换为上三角行列式while j < line_size - 1:line = data[j]temp = line[j]templete = []for x in line:x = x / temptemplete.append(x)data[j] = templete# flag标志应该进行消元的行数flag = j + 1while flag < line_size:templete1 = []temp1 = data[flag][j]i = 0for x1 in data[flag]:if x1 != 0:x1 = x1 - (temp1 * templete[i])templete1.append(x1)else:templete1.append(0)i += 1data[flag] = templete1flag += 1j += 1# 求相应的参数值parameters = []i = line_size - 1# j标识减去元素个数# flag_rol标识除那一列flag_j = 0rol_size = len(data[0])flag_rol = rol_size - 2# 获得解的个数while i >= 0:operate_line = data[i]if i == line_size - 1:parameter = operate_line[rol_size - 1] / operate_line[flag_rol]parameters.append(parameter)else:flag_j = (rol_size - flag_rol - 2)temp2 = operate_line[rol_size - 1]# result_flag为访问已求出解的标志result_flag = 0while flag_j > 0:temp2 -= operate_line[flag_rol + flag_j] * parameters[result_flag]result_flag += 1flag_j -= 1parameter = temp2 / operate_line[flag_rol]parameters.append(parameter)flag_rol -= 1i -= 1return parametersdef calculate(data_x1, data_x2, parameters):datay = []i = 0while i < len(data_x1):result = parameters[2] + parameters[1] * data_x1[i] + parameters[0] * data_x2[i]i += 1datay.append(result)return datay#画图
def draw(data_x, old_y, new_y):# 创建绘图函数对象fig = plt.figure()# 创建Axes3D对象,让其包含图像3D坐标ax = Axes3D(fig)ax.scatter(data_x[0], data_x[1], old_y, color='red')ax.plot(data_x[0], data_x[1], new_y, "bp--")mpl.rcParams['font.sans-serif'] = ['SimHei']mpl.rcParams['axes.unicode_minus'] = Falseplt.title("最小二乘法预测贷款额度")plt.show()data = multivariatel_fitting(x1, x2, y)
data2 = calculate_parameter(data)
# print(data2)
print(data2[1] * eval(input()) + data2[0] * eval(input()) + data2[2])
newY = calculate(x1, x2, data2)
draw([x1, x2], y, newY)

结果图:

预测结果:

点个👍吧

更多推荐

python机器学习 实验一 使用最小二乘法进行贷款额度预测

本文发布于:2024-02-12 23:24:19,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1689808.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:乘法   额度   小二   贷款   机器

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!