zoukankan      html  css  js  c++  java
  • python 10大算法之一 LinearRegression 笔记

     

    简单的线性回归预测房价

    #!/usr/bin/env python
    # encoding: utf-8
    
    """
    @version: 
    @author: --*--.
    @file: LinearRegression.py
    @time: 2018/11/1 11:05
    @desc: 
    """
    
    # Required Packages
    import matplotlib.pyplot as plt
    import numpy as np
    from sklearn import linear_model
    
    
    def get_data():
        """
        生成随机的线性数据集
        :return:
        """
        x = 100 * np.random.rand(100, 1).astype(np.float32)
        y = 2 * x + 10  # 直线
        # y = 7 * x ** 5 + 3 * x + 10  # 曲线
        y += 50 * np.random.rand(100, 1).astype(np.float32)
    
        return x, y
    
    
    # Function for Fitting our data to Linear model
    def linear_model_main(X_parameters, Y_parameters, predict_value):
        # Create linear regression object
        regr = linear_model.LinearRegression()
        regr.fit(X_parameters, Y_parameters,sample_weight=None) # 权重
        predict_outcome = regr.predict(predict_value)
    
        predictions = {}
        predictions['intercept'] = regr.intercept_
        predictions['coefficient'] = regr.coef_
        predictions['predicted_value'] = predict_outcome
        return predictions
    
    
    # Function to show the resutls of linear fit model
    def show_linear_line(X_parameters, Y_parameters, predictvalue):
        # Create linear regression object
        regr = linear_model.LinearRegression()
        regr.fit(X_parameters, Y_parameters)
    
        fig = plt.figure()
        ax1 = fig.add_subplot(111)
        # 设置标题
        ax1.set_title('Housing Forecast')
    
        ax1.scatter(X_parameters, Y_parameters, color='blue', marker='*')
        ax1.plot(X_parameters, regr.predict(X_parameters), color='c', linewidth=1)
    
        # 画点
        ax1.scatter(predictvalue, regr.predict(predictvalue), color='red')
    
        # 画水平虚线
        plt.axvline(x=predictvalue, ls='dotted', color='y')
        plt.axhline(y=regr.predict(predictvalue), ls='dotted', color='y')
    
        plt.xlabel('x:area')
        plt.ylabel('y:price')
    
        plt.show()
    
    
    if __name__ == "__main__":
        X, Y = get_data()
        predictvalue = 90  # 面积
        # 新版必须2维哦
        predictvalue = np.array(predictvalue,dtype=np.int32).reshape(1, -1)
    
        result = linear_model_main(X, Y, predictvalue)
    
        print("截距-Intercept value ", result['intercept'])
        print("回归系数-coefficient", result['coefficient'])
        print("y-Predicted value: ", result['predicted_value'])
        print("面积 %d 的价格预测为 %d" % (predictvalue, result['predicted_value']))
    
        show_linear_line(X, Y, predictvalue)

    输出结果为:

    /usr/bin/python3.5 /home/think-hxr/PycharmProjects/MachineLearningAlgorithms/LinearRegression.py
    Intercept value  [ 38.77058411]
    coefficient [[ 1.92119944]]
    Predicted value:  [[ 211.67853379]]
    面积 90 的价格预测为 211

    画图:

  • 相关阅读:
    经典网络还是VPC,开发者作何选择?
    经典网络还是VPC,开发者作何选择?
    文件系统的几种类型:ext3, swap, RAID, LVM
    文件系统的几种类型:ext3, swap, RAID, LVM
    ★商场上的十则寓言故事!
    ★商场上的十则寓言故事!
    【★】自制网络心理需求大排名!
    【★】自制网络心理需求大排名!
    自制mpls ldp实验
    自制mpls ldp实验
  • 原文地址:https://www.cnblogs.com/haoxr/p/7722646.html
Copyright © 2011-2022 走看看