• 大小: 57KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-08
  • 语言: 其他
  • 标签: python  线性回归  

资源简介

线性回归数值型预测:预测鲍鱼的年龄 压缩文件中包含源码以及训练数据、测试数据

资源截图

代码片段和文件信息

#!/usr/bin/python
# -*- coding utf-8 -*-
# Project: Regression
# Author: jiangnan 
# Mail: jiangnanmax@gmail.com
# Date: 2018/10/13

import numpy as np

def loadTrainData(filename):
    “““
    函数说明:
        加载训练数据
    :param filename:
        文件名
    :return:
        xArray - x数据集,即为每个训练样本的特征参数
        yArray - y数据集,即为每个训练样本的年龄
    “““
    featNum = len(open(filename).readline().split(‘‘)) - 2 # 特征参数的个数,其中舍掉了第一个性别特征

    file = open(filename)
    xArray = []
    yArray = []
    for line in file.readlines():
        tempLine = line.strip().split(‘‘)
        ‘‘‘
        if tempLine[0] == ‘M‘:
            tempLine[0] = ‘1‘
        elif tempLine[0] == ‘F‘:
            tempLine[0] = ‘-1‘
        else:
            tempLine[0] = ‘0‘
        ‘‘‘
        del(tempLine[0])

        xArr = []
        for i in range(featNum):
            xArr.append(float(tempLine[i]))
        xArray.append(xArr)
        yArray.append(float(tempLine[-1]))

    return xArray yArray

def loadTestData(filename):
    “““
    函数说明:
        加载测试数据
    :param filename:
        文件名
    :return:
        xArray - x数据集,即为每个测试样本的特征参数
    “““
    featNum = len(open(filename).readline().split(‘‘)) - 1 # 特征参数的个数,其中舍掉了第一个性别特征

    file = open(filename)
    xArray = []
    for line in file.readlines():
        tempLine = line.strip().split(‘‘)
        ‘‘‘
        if tempLine[0] == ‘M‘:
            tempLine[0] = ‘1‘
        elif tempLine[0] == ‘F‘:
            tempLine[0] = ‘-1‘
        else:
            tempLine[0] = ‘0‘
        ‘‘‘
        del(tempLine[0])

        xArr = []
        for i in range(featNum):
            xArr.append(float(tempLine[i]))
        xArray.append(xArr)

    return xArray

def lwlRegression(testPoint xArr yArr k=1.0):
    “““
    函数说明:
        使用局部加权线性回归计算回归系数w
    :param testPoint:
        测试样本
    :param xArr:
        x训练数据集
    :param yArr:
        y训练数据集
    :param k:
        高斯核的k值,默认为1.0,可自定义
    :return:
        testPoint * ws - 计算得到的系数w对测试样本的预测值
    “““
    xMat = np.mat(xArr)
    yMat = np.mat(yArr).T
    m = np.shape(xMat)[0]
    weights = np.mat(np.eye((m)))
    for i in range(m):
        diffMat = testPoint - xMat[i :]
        weights[i i] = np.exp(diffMat * diffMat.T / (-2.0 * k ** 2))
    xTx = xMat.T * (weights * xMat)
    if np.linalg.det(xTx) == 0.0:
        print(“不能求逆!“)
        return

    ws = xTx.I * (xMat.T * (weights * yMat))
    return testPoint * ws


def RegressionTest(testArr xArr yArr k=1.0):
    “““
    函数说明:
        局部加权线性回归测试
    :param testArr:
        测试数据集
    :param xArr:
        x训练数据集
    :param yArr:
        y训练数据集
    :param k:
        高斯核的k值,默认为1.0,可自定义
    :return:
        yHat - 测试集合的所有预测值
    “““
    m = np.shape(testArr)[0]
    yHat = np.zeros(m)
    for i in range(m):
        yHat[i] = lwlRegression(testArr[i] xArr yArr k)
    return yHat

def main():
    “““
    函数说明:
        主函数,综合调用上述功能函数完成工作
    “““
    trainX trainY = loadTrainData(‘train.txt‘);
    testX = loadTestData(‘test.txt‘)

    yHat = Regre

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-10-28 16:42  Regression\
     文件        3667  2018-10-18 19:06  Regression\Regression.py
     文件        6148  2018-10-28 16:41  Regression\.DS_Store
     目录           0  2018-10-28 16:42  __MACOSX\
     目录           0  2018-10-28 16:42  __MACOSX\Regression\
     文件         120  2018-10-28 16:41  __MACOSX\Regression\._.DS_Store
     文件      156908  2017-11-15 10:27  Regression\train.txt
     文件         228  2017-11-15 10:27  __MACOSX\Regression\._train.txt
     文件       32768  2017-11-15 10:27  Regression\test.txt
     文件         228  2017-11-15 10:27  __MACOSX\Regression\._test.txt
     文件         172  2018-10-28 16:42  __MACOSX\._Regression

评论

共有 条评论