机器学习实验------线性回归方法

第1关:数据载入与分析

任务描述

本关任务:编写一个能够载入线性回归相关数据的小程序。

编程要求

该实战内容中数据为一元数据,利用 pandas 读入数据文件,并为相应的数据附上名字标签,分别为Population 和 Profit。

python 复制代码
#encoding=utf8
import os
import pandas as pd

if __name__ == "__main__":
    path = os.getcwd() + '/ex1data1.txt'
    #利用pandas读入数据data,并将数据属性分别命名为'Population'和'Profit'
    #********* begin *********#
    data = pd.read_csv(path, header=None ,names=['Population','Profit'])
    #********* end *********#
    print(data.shape)

第2关:计算损失函数

编程要求

根据以上公式,编写计算损失函数computeCost(X, y, theta),最后返回cost。

  • X:一元数据矩阵,即Population数据;
  • y:目标数据,即Profit数据;
  • theta:模型参数;
  • cost:损失函数值。
python 复制代码
#encoding=utf8
import numpy as np

def computeCost(X, y, theta):
    #根据公式编写损失函数计算函数
    #********* begin *********#
    inner=np.power(((X*theta.T)-y),2)
    cost=np.sum(inner)/(2*len(X))
    cost=round(cost,10)
    #********* end *********#
    return cost

第3关:进行梯度下降得到线性模型

编程要求

根据以上公式,编写计算损失函数gradientDescent(X, y, theta, alpha, iters),最后返回theta, cost。

  • x:一元数据矩阵,即Population数据;
  • y:目标数据,即Profit数据;
  • theta:模型参数;
  • m:数据规模;
  • α: 学习率。
python 复制代码
#encoding=utf8
import numpy as np

def computeCost(X, y, theta):
    inner = np.power(((X * theta.T) - y), 2)
    return np.sum(inner) / (2 * len(X))

def gradientDescent(X, y, theta, alpha, iters):
    temp = np.matrix(np.zeros(theta.shape))
    parameters = int(theta.ravel().shape[1])
    cost = np.zeros(iters)
    
    for i in range(iters):
        error = (X * theta.T) - y
        
        for j in range(parameters):
            #********* begin *********#
            term=np.multiply(error,X[:,j])
            temp[0,j]=theta[0,j]-((alpha/len(X))*np.sum(term))
            #********* end *********#
        theta = temp
        cost[i] = computeCost(X, y, theta)
        
    return theta, cost

第4关:建立完整线性回归模型

编程要求

在前三个关卡的基础上,从宏观的视角构建一个完整的线性回归模型。主要编写数据载入,损失函数,梯度下降函数三部分。

python 复制代码
#encoding=utf8

import os
import numpy as np
import pandas as pd

#载入数据并进行数据处理
path = os.getcwd() + '/ex1data1.txt'
#********* begin *********#
data=pd.read_csv(path,header=None,names=['Population','Profit'])


#********* end *********#
data.insert(0, 'Ones', 1)
cols = data.shape[1]
X = data.iloc[:,0:cols-1]
y = data.iloc[:,cols-1:cols]

#初始化相关参数
X = np.matrix(X.values)
y = np.matrix(y.values)
theta = np.matrix(np.array([0,0]))
alpha = 0.01
iters = 1000

#定义损失函数
def computeCost(X, y, theta):
    #********* begin *********#
    inner=np.power(((X*theta.T)-y),2)
    cost=np.sum(inner)/(2*len(X))
    cost=round(cost,10)

    #********* end *********#
    return cost

#定义梯度下降函数
def gradientDescent(X, y, theta, alpha, iters):
    temp = np.matrix(np.zeros(theta.shape))
    parameters = int(theta.ravel().shape[1])
    cost = np.zeros(iters)
    
    for i in range(iters):
        error = (X * theta.T) - y
        
        for j in range(parameters):
            #********* begin *********#
            term=np.multiply(error,X[:,j])
            temp[0,j]=theta[0,j]-((alpha/len(X))*np.sum(term))

            #********* end *********#            
        theta = temp
        cost[i] = computeCost(X, y, theta)        
    return theta, cost

#根据梯度下架算法得到最终线性模型参数
g, cost = gradientDescent(X, y, theta, alpha, iters)

print("模型参数为:", g)
相关推荐
console.log('npc')19 分钟前
AI前端工程与生成式UI学习路线
前端·人工智能·ui
秋91 小时前
3年经验Python后端转AI Engineer:3个月实战转型计划(2026版)
开发语言·人工智能·python
圣殿骑士-Khtangc1 小时前
GPT-5.5 技术深度解析与企业级生产落地实战:从幻觉率下降到百万Token工程化
人工智能·gpt
2601_961963382 小时前
技术解剖:哈希值、区块链与CA认证如何守护电子合同安全?
网络·人工智能·安全·区块链·智能合约·政务
2601_961963382 小时前
从“电子化”到“自动化”:2026年智能合约与电子合同融合的技术逻辑与法律适配
网络·人工智能·区块链·智能合约·政务
米小虾2 小时前
AI Skills 工程化:当每个开发者都有一支「AI 小队」,你该怎么管理?
人工智能
DisonTangor2 小时前
谷歌开源首个扩散大语言模型——DiffusionGemma
人工智能·语言模型·自然语言处理·开源·aigc·transformer
冬奇Lab2 小时前
每日一个开源项目(第129篇):OpenMed - 永不离开设备的医疗 NLP
人工智能·开源·资讯
冬奇Lab2 小时前
Agent 系列(19):Harness 完整体系——8 层防护框架全景
人工智能·llm·agent
米小虾2 小时前
Claude Fable 5 系统提示词被扒出来了:1586 行代码背后,藏着 AI 产品工程的终极哲学
人工智能·agent