機器學習第二篇 多變量線性回歸

數據集:世界幸福指數數據集中的變量有幸福指數排名、國家/地區、幸福指數得分、人均國內生產總值、健康預期壽命、自由權、社會支持、慷慨程度、清廉指數。我們選擇GDP per Capita和Freedom,來預測幸福指數得分。

文件一:linear,在上一篇博客里。

文件二:multivariate_linear_regression.py

import numpy as np
"""用于科學計算的一個庫,提供了多維數組對象以及操作函數"""
import pandas as pd
"""一個用于數據導入、導出、清洗和分析的庫,本文中導入csv格式數據等等"""
import matplotlib.pyplot as plt
"""pyplot提供了繪圖接口"""
import matplotlib
"""一個強大的繪圖庫"""
import plotly
"""網頁交互數據可視化工具,可以直接從https://plotly.com/python/官網copy代碼進行修改"""
import plotly.graph_objs as goplotly.offline.init_notebook_mode()
# 設置matplotlib正常顯示中文和負號
matplotlib.rcParams['font.family'] = 'SimHei'  # 指定默認字體為黑體
matplotlib.rcParams['axes.unicode_minus'] = False  # 正確顯示負號from prepare_for_training import LinearRegressiondata = pd.read_csv("D:/machine_learning/archive/2017.csv")
train_data = data.sample(frac = 0.8)
"""從數據集中隨機抽取80%的數據進行訓練"""
test_data = data.drop(train_data.index)
"""從數據集中移除訓練集得到測試機"""input_param_name_1 = 'Economy..GDP.per.Capita.'
input_param_name_2 = 'Freedom'
output_param_name = 'Happiness.Score'x_train = train_data[[input_param_name_1,input_param_name_2]].values
y_train = train_data[[output_param_name]].valuesx_test = test_data[[input_param_name_1,input_param_name_2]].values
y_test = test_data[[output_param_name]].valuesplot_training_trace = go.Scatter3d(x = x_train[:,0].flatten(),y = x_train[:,1].flatten(),z = y_train.flatten(),name = 'Training Set',mode = 'markers',marker = {'size':10,'opacity':1,'line':{'color':'rgb(255,255,255)','width':1},}
)plot_test_trace = go.Scatter3d(x = x_test[:,0].flatten(),y = x_test[:,1].flatten(),z = y_test.flatten(),name = 'Test Set',mode = 'markers',marker = {'size':10,'opacity':1,'line':{'color':'rgb(255,255,255)','width':1},}
)plot_layout = go.Layout(title = 'Data Sets',scene = {'xaxis':{'title':input_param_name_1},'yaxis':{'title':input_param_name_2},'zaxis':{'title':output_param_name}},margin = {'l':0,'r':0,'b':0,'t':0}
)
plot_data = [plot_training_trace,plot_test_trace]
plot_figure = go.Figure(data = plot_data,layout=plot_layout)
plotly.offline.plot(plot_figure)
"""plt.scatter(x_train,y_train,label ='Train data')
plt.scatter(x_test,y_test,label ='Test data')
plt.xlabel(input_param_name_1)
plt.ylabel(output_param_name)
plt.title('Happy')
plt.legend()
plt.show()""""""訓練次數,學習率"""
num_iterations = 500
learning_rate = 0.01
polynomial_degree = 0
sinusoid_degree = 0linear_regression = LinearRegression(x_train,y_train,polynomial_degree,sinusoid_degree)
(theta,cost_history) = linear_regression.train(learning_rate,num_iterations)
print('開始時的損失',cost_history[0])
print('訓練后的損失',cost_history[-1])plt.plot(range(num_iterations),cost_history)
plt.xlabel('Iter')
plt.ylabel('cost')
plt.title('gradient descent progress')
plt.show()predictions_num = 10x_min = x_train[:,0].min()
x_max = x_train[:,0].max()y_min = x_train[:,1].min()
y_max = x_train[:,1].max()x_axis = np.linspace(x_min,x_max,predictions_num)
y_axis = np.linspace(y_min,y_max,predictions_num)x_predictions = np.zeros((predictions_num * predictions_num,1))
y_predictions = np.zeros((predictions_num * predictions_num,1))x_y_index = 0
for x_index,x_value in enumerate(x_axis):for y_index,y_value in enumerate(y_axis):x_predictions[x_y_index] = x_valuey_predictions[x_y_index] = y_valuex_y_index += 1z_predictions = linear_regression.predict(np.hstack((x_predictions,y_predictions)))plot_predictions_trace = go.Scatter3d(x = x_predictions.flatten(),y = y_predictions.flatten(),z = z_predictions.flatten(),name = 'Prediction Plane',mode = 'markers',marker = {'size':1,},opacity=0.8,surfaceaxis=2,
)plot_data = [plot_training_trace,plot_test_trace,plot_predictions_trace]
plot_figure = go.Figure(data = plot_data,layout=plot_layout)
plotly.offline.plot(plot_figure)效果:

損失值較單變量而言,由降低約0.1.

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/77937.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/77937.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/77937.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

位運算,狀態壓縮dp(算法競賽進階指南學習筆記)

目錄 移位運算一些位運算的操作最短 Hamilton 路徑(狀態壓縮dp模板,位運算) 0x是十六進制常數的開頭;本身是聲明進制,后面是對應具體的數; 數組初始化最大值時用0x3f賦值; 移位運算 左移 把二…

Java高頻面試之并發編程-05

hello啊,各位觀眾姥爺們!!!本baby今天來報道了!哈哈哈哈哈嗝🐶 面試官:線程有哪些調度方法? 在Java中,線程的調用方法主要包括以下幾種方式,每種方式適用于…

進程的同步和互斥

進程同步(synchronous) ?通俗理解: 就像在排隊買飯,一個一個來,前面的人不走,后面的人就不能干事。 進程同步就是:多個進程之間需要協調,有先后順序,一個進程要等另一…

PDF處理控件Aspose.PDF指南:使用 Python 將 EPUB 轉換為 PDF

EPUB是一種流行的電子書格式,用于可重排內容,而PDF則廣泛用于固定版式文檔,非常適合共享和打印。如果您想使用 Python 將 EPUB 轉換為 PDF,Aspose.PDF for Python 提供了一個簡單可靠的解決方案。在本教程中,我們將向您…

day4-小白學習JAVA---開發軟件_Scanner鍵盤錄入_Random隨機數_流程控制語句

開發軟件_Scanner鍵盤錄入_Random隨機數_流程控制語句 一、開發軟件idea(MAC版)1、軟件安裝-安裝社區版2、中英文設置3、保存時格式化配置4、注釋和代碼對不齊5、idea快捷鍵 二、鍵盤錄入--Scanner1、next和nextInt2、next和nextLine區別 三、Random隨機…

MySQL基本查詢與數據操作全面解析

目錄 1. CRUD操作概述 2. Create操作詳解 2.1 表的創建 2.2 單行數據插入 2.3 多行數據插入 2.4 插入沖突處理 3. Retrieve操作詳解 3.1 基礎查詢 全列查詢(慎用) 指定列查詢 表達式查詢 結果去重 3.2 條件查詢(WHERE子句&#…

01.Python代碼Pandas是什么?pandas的簡介

01.Python代碼Pandas是什么?pandas的簡介 提示:幫幫志會陸續更新非常多的IT技術知識,希望分享的內容對您有用。本章分享的是pandas的使用語法。前后每一小節的內容是存在的有:學習and理解的關聯性,希望對您有用~ pyth…

(8)ECMAScript語法詳解

本系列教程目錄:Vue3Element Plus全套學習筆記-目錄大綱 文章目錄 第2章 ECMAScript2.1 ECMAScript 的發展歷史2.2 什么是ES62.3 ES6語法新特性2.3.1 變量聲明let2.3.2 常量聲明2.3.3 模板字符串2.3.4 函數默認參數2.3.5 箭頭函數2.3.6 對象初始化簡寫2.3.7 解構2.3…

Android JNI開發中頭文件引入的常見問題與解決方案?,提示:file not found

Android JNI開發中頭文件引入的常見問題與解決方案 問題場景(新手易犯錯誤) 假設你在開發一個JNI項目,想要實現一個線程安全的隊列(SafeQueue),于是直接在cpp目錄下創建了safe_queue.h文件,并開…

C++靜態與動態聯編區別解析

在 C++ 中,靜態聯編(Static Binding)和動態聯編(Dynamic Binding)是兩種不同的函數調用綁定機制,核心區別在于確定函數調用的時機和多態性的支持。以下是詳細解釋: 1. 靜態聯編(Static Binding) 定義:在編譯階段確定函數調用與具體實現的關系。特點: 由編譯器直接確…

如何批量為多個 Word 文檔添加水印保護

在日常辦公中,Word文檔添加水印是一項重要的操作,特別是在需要保護文件內容的安全性和版權時。雖然Office自帶了添加水印的功能,但當需要一次性給多個Word文檔添加水印時,手動操作顯得非常繁瑣且低效。為了提高效率,可…

【愚公系列】《Python網絡爬蟲從入門到精通》057-分布式爬取中文日報新聞數據

🌟【技術大咖愚公搬代碼:全棧專家的成長之路,你關注的寶藏博主在這里!】🌟 📣開發者圈持續輸出高質量干貨的"愚公精神"踐行者——全網百萬開發者都在追更的頂級技術博主! &#x1f…

Linux系統編程 day9 SIGCHLD and 線程

SIGCHLD信號 只要子進程信號發生改變&#xff0c;就會產生SIGCHLD信號。 借助SIGCHLD信號回收子進程 回收子進程只跟父進程有關。如果不使用循環回收多個子進程&#xff0c;會產生多個僵尸進程&#xff0c;原因是因為這個信號不會循環等待。 #include<stdio.h> #incl…

微信小程序拖拽排序有效果圖

效果圖 .wxml <view class"container" style"--w:{{w}}px;" wx:if"{{location.length}}"><view class"container-item" wx:for"{{list}}" wx:key"index" data-index"{{index}}"style"--…

hadoop三大組件的結構及各自的作用

1 HDFS 1.1功能 HDFS 是 Hadoop 的分布式文件系統&#xff0c;用于存儲和管理海量數據。它具有高容錯性、高吞吐量和可擴展性&#xff0c;能夠在多個節點上存儲和管理大規模數據 1.2架構&#xff1a;采用主從架構&#xff0c;由一個 NameNode 和多個 DataNode 組成。NameNode…

解決jupyter notebook修改路徑下沒有c.NotebookApp.notebook_dir【建議收藏】

文章目錄 一、檢查并解決問題二、重新設置默認路徑創作不易&#xff0c;感謝未來首富們的支持與關注&#xff01; 最近在用jupyter notebook編寫代碼時&#xff0c;更新了一下Scikit-learn的版本&#xff0c;然后重新打開jupyter notebook的時候&#xff0c;我傻眼了&#xff0…

MCP Host、MCP Client、MCP Server全流程實戰

目錄 準備工作 MCP Server 實現 調試工作 MCP Client 實現 MCP Host 配置 第一步:配置支持 function calling的 LLM 第二步:添加MCP Server 一般有兩種方式,第一種json配置,第二種直接是Command形式,我這里采用Command形式 第三步:使用MCP Server 準備工作 安裝…

4.21—4.22學習總結 JavaWeb:HTML-CSS

Web&#xff1a;能夠通過瀏覽器訪問到的網站。 Web標準&#xff1a; HTML&#xff1a; vscode中進行注釋的快捷鍵為ctrl斜線/ h1的字體最大&#xff0c;依次遞減&#xff0c;只存在h1—h6。 超鏈接&#xff1a; 設置字體顏色&#xff1a; 方式三寫一個css文件&#xff0c;將方…

Kaamel Agent: 基于EU AI Act的AI影響評估(AIIA)

1. 引言&#xff1a;安全視角下的AI監管 隨著人工智能技術的快速發展和廣泛應用&#xff0c;AI系統在為社會帶來創新和效率的同時&#xff0c;也引發了諸多關于安全、隱私和合規的擔憂。在這一背景下&#xff0c;全球范圍內涌現出多種監管框架和標準&#xff0c;旨在確保AI系統…

Mongodb分布式文件存儲數據庫

文章目錄 一、MongoDB 簡介基本信息特點內部組件 二、MongoDB 部署1. 安裝依賴2. 解壓部署并配置環境變量3. 修改配置文件以及啟動服務4.數據庫權限管理 三、MongoDB 管理1. 角色權限2. 操作命令用戶管理命令常用命令&#xff08;Mongo4.2.8&#xff09;數據庫相關用戶相關集合…