python如何做回歸性分析

2022-01-29 數據處理和工作效率
本文將介紹關於python的兩類回歸性分析操作方法,主要有以下內容:在統計學中,回歸分析指的是確定兩種或兩種以上變量間相互依賴的定量關係的一種統計分析方法。在大數據分析中,回歸分析是一種預測性的建模技術,它研究的是因變量(目標)和自變量(預測器)之間的關係。回歸分析可以表明因變量和自變量之間的顯著關係;也可以表明自變量對因變量的影響程度。利用回歸分析,我們可以更好的了解哪些變量對因變量的影響程度更大,從而決定採取什麼樣的方式去解決問題或者達到目標。比較常見的回歸分析有線性回歸、邏輯回歸,除了這兩種,還有多項式回歸、逐步回歸、嶺回歸、套索回歸和彈性網絡回歸也都比較常見。示例:有20名學生,以及他們為考試花費時間和最後的考試成績,我們需要研究自變量花費時間和因變量成績的相關關係。

從上圖可以看出來,學習時間越大,考試成績越高,相關係數為0.93,學習時間和考試成績是強相關。

但是假設我們將以上成績只是用及格和不及格來表示的話。我們則建立函數。

dataframe增加一列變成上圖的一樣,然後我們對及格不及格和花費的時間進行分析,繪製散點圖,結果如下。

我們發現使用線性回歸的「最佳擬合線」在這裡就是不合適的。這裡就需要使用邏輯回歸。

現在正式開始今天的正文,如果利用python做回歸性分析。

1、線性回歸

a、提取特徵x和標籤y

exam_x = df.loc[:, '學習時間']exam_y = df.loc[:, '成績']

b、建立訓練數據和測試數據

x_train, x_test, y_train, y_test = train_test_split(exam_x, exam_y, train_size=.8)

c、輸出數據

print('原始數據特徵', exam_x.shape,      '訓練數據特徵', x_train.shape,      '測試數據特徵', x_test.shape)
print('原始數據特徵', exam_y.shape, '訓練數據特徵', y_train.shape, '測試數據特徵', y_test.shape)

d、訓練模型和計算回歸截距回歸係數

model1 = LinearRegression()
x_train = x_train.values.reshape(-1,1)x_test = x_test.values.reshape(-1,1)model1.fit(x_train,y_train)
a = model1.intercept_b = model1.coef_print('最佳擬合線:截距a=',a,'回歸係數b=',b)plt.scatter(x_train,y_train,edgecolors='red')y_train_pred = model1.predict(x_train)plt.plot(x_train,y_train_pred,color='g')plt.xlabel('hours')plt.ylabel('data')plt.show()

e、模型準確性評估

t = model1.score(x_test,y_test)print('線性回歸模型準確率為',t)

最終線性回歸的列印結果和繪製的圖標如下圖:

2、邏輯回歸

邏輯回歸的步驟和線性回歸基本差不多,具體見一下代碼。

1、提取特徵x和標籤yexam_x1 = df.loc[:, '學習時間']exam_y1 = df.loc[:, '是否及格']
x1_train, x1_test, y1_train, y1_test = train_test_split(exam_x1, exam_y1, train_size=.8)
print('原始數據特徵', exam_x1.shape, '訓練數據特徵', x1_train.shape, '測試數據特徵', x1_test.shape)
print('原始數據特徵', exam_y1.shape, '訓練數據特徵', y1_train.shape, '測試數據特徵', y1_test.shape)
model2 = LogisticRegression()
x1_train = x1_train.values.reshape(-1,1)x1_test = x1_test.values.reshape(-1,1)model2.fit(x1_train,y1_train)

t1 = model2.score(x1_test,y1_test)print('邏輯回歸模型準確率為',t1)

邏輯回歸的最終列印結果如下圖:

以上就是整個線性回歸和邏輯回歸分析的python操作步驟,在python中需要使用引入三個函數。

from sklearn.linear_model import LinearRegressionfrom sklearn.model_selection import train_test_splitfrom sklearn.linear_model import LogisticRegression

其中train_test_split是交叉驗證中常用的函數,功能是從樣本中隨機的按比例選取訓練數據(train)和測試數據(test)。

以下是整個分析的完整代碼,希望對大家具有參考作用。

import pandas as pdimport numpy as npimport matplotlib.pyplot as pltfrom sklearn.linear_model import LinearRegressionfrom sklearn.model_selection import train_test_splitfrom sklearn.linear_model import LogisticRegression
d = {'學習時間': [0.5, 0.75, 1, 1.25, 1.5, 1.75, 2, 2.25, 2.5, 2.75, 3, 3.25, 3.5, 3.75, 4, 4.25, 4.5, 4.75, 5, 5.5], '成績': [10, 20, 13, 43, 20, 22, 33, 50, 62, 48, 55, 75, 62, 73, 81, 75, 64, 82, 90, 93]}df = pd.DataFrame(d)
def score(x): if x >= 60: y = '及格' else: y = '不及格' return y
df['是否及格'] = df['成績'].apply(score)
exam_x = df.loc[:, '學習時間']exam_y = df.loc[:, '成績']
x_train, x_test, y_train, y_test = train_test_split(exam_x, exam_y, train_size=.8)
print('原始數據特徵', exam_x.shape, '訓練數據特徵', x_train.shape, '測試數據特徵', x_test.shape)
print('原始數據特徵', exam_y.shape, '訓練數據特徵', y_train.shape, '測試數據特徵', y_test.shape)
model1 = LinearRegression()
x_train = x_train.values.reshape(-1,1)x_test = x_test.values.reshape(-1,1)model1.fit(x_train,y_train)
a = model1.intercept_b = model1.coef_print('最佳擬合線:截距a=',a,'回歸係數b=',b)plt.scatter(x_train,y_train,edgecolors='red')y_train_pred = model1.predict(x_train)plt.plot(x_train,y_train_pred,color='g')plt.xlabel('hours')plt.ylabel('data')plt.show()
t = model1.score(x_test,y_test)print('線性回歸模型準確率為',t)
exam_x1 = df.loc[:, '學習時間']exam_y1 = df.loc[:, '是否及格']
x1_train, x1_test, y1_train, y1_test = train_test_split(exam_x1, exam_y1, train_size=.8)
print('原始數據特徵', exam_x1.shape, '訓練數據特徵', x1_train.shape, '測試數據特徵', x1_test.shape)
print('原始數據特徵', exam_y1.shape, '訓練數據特徵', y1_train.shape, '測試數據特徵', y1_test.shape)
model2 = LogisticRegression()
x1_train = x1_train.values.reshape(-1,1)x1_test = x1_test.values.reshape(-1,1)model2.fit(x1_train,y1_train)

t1 = model2.score(x1_test,y1_test)print('邏輯回歸模型準確率為',t1)

相關焦點

  • python數據分析專題 (7):python數據分析模塊
    python是一門優秀的程式語言,而是python成為數據分析軟體的是因為python強大的擴展模塊。
  • Python做數據分析-簡潔、易讀、強大
    由於python是一種解釋性語言,大部分編譯型語言都要比python代碼運行速度快,有些同學就因此鄙視python。但是python是一門高級語言,其生產效率更高,時間通常比CPU的時間值錢,因此為了權衡利弊,考慮用python是值得的。
  • 呆瓜半小時入門python數據分析_v2
    我發現書店的大量數據分析書籍與實際工作內容相差甚大。書裡把數據分析和,機器學習算法,數據挖掘,人工智慧深度學習知識混雜在一起,這會造成初學者困惑,到底什麼是數據分析?該如何下手學習?如何快速掌握數據分析內容,以後去公司上班時會更加接地氣?我是一名模型專家,平時和數據分析師工作聯繫比較緊密,我比較熟悉數據分析師工作,我建立模型時也會做大量數據分析工作。
  • 小白數據分析——Python職位數據分析全鏈路
    數據採集巧婦難為無米之炊,我們做數據分析大部分情況是用公司的業務數據,因此就不需要關心數據採集的問題。然而我們自己業餘時間做的一些數據探索更多的需要自己採集數據,常用的數據採集技術就是爬蟲。完成數據清洗後,我們就正式進入分析的環節了,分析分為兩部分,統計分析和文本分析,前者是對數值型指標做統計,後者是對文本進行分析。我們平時接觸到最多是前者,它可以讓我們從宏觀的角度去了解被分析的對象。文本分析也有不可替代的價值,我們下篇重點介紹。2.
  • Python數據分析經典案例
    本課程選擇經典案例基於真實數據集,從數據預處理開始到建立機器學習模型以及效果評估,完整的講解如何使用python及其常用庫進行數據的分析和模型的建立
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    Mov 1-2在線編譯工具weblde使用之指南.mov 2-1如何在列表,字典,集合中根據條件.MOV 2-2 3 4命名 統計 字典.mov 2-5公共鍵.mov 2-6 如何讓字典保持有序.mov 2-7歷史記錄.mov 3-1 2迭代器.mov 3-3如何使用生成器函數實現迭代對象
  • 漫畫:如何分析運行中的 Python 程序?
    使用 py-spypy-spy 是一款開源的 Python 程序的抽樣分析工具,使用 py-spy 可以很直觀的查看 Python 程序的進程堆棧以及不同方法的耗時等,整個監控方式不需要對正在運行的程序做任何處理
  • 關於Python病毒樣本的分析方法
    使用需要創建一個set.py(名稱隨意),文件內容:from distutils.core import setupset.py -h可查看幫助python set.py py2exe指令可編譯成exe文件效果如下圖:分析方法(1) 在py2exe打包後的結果文件中,exe和python.dll都是必要組件。
  • 手把手教你如何用 Python 做情感分析
    你是不是疑惑,這麼高深的技術,自己這個非計算機專業的文科生,如何才能應用呢?不必擔心。從前情感分析還只是實驗室或者大公司的獨門秘籍。現在早已飛入尋常百姓家。門檻的降低使得我們普通人也可以用Python的幾行代碼,完成大量文本的情感分析處理。是不是摩拳擦掌,打算動手嘗試了?那我們就開始吧。
  • Python數據分析到底可以用來做什麼?
    由於Python擁有非常豐富的庫,使其在數據分析領域也有廣泛的應用。由於Python本身有十分廣泛的應用,本期Python數據分析路線圖主要從數據分析從業人員的角度講述Python數據分析路線圖。整個路線圖計劃分成16周,120天左右。
  • Python數據分析平臺Spyder簡介
    Rstudio是一款非常優秀的R語言集成開發環境,給學習R帶來了非常大的便利,尤其是交互式的數據探索模式。很多實
  • 科悟學院介紹什麼是Python、python能做什麼?
    這是很多人想知道的,今天小編就給你揭秘一個行業——Python(AI人工智慧),有人會問python到底是什麼?能做什麼?下面科悟學院介紹什麼是python和python能做什麼,希望對於正在學習的你有所幫助。
  • 超適合Python小白的乾貨,Python數據分析50個實戰項目
    ——人力資源分析9.大眾點評評論文本挖掘10.手機微博榜單數據爬蟲與分析11.貓眼電影爬蟲及分析12.漫威電影宇宙英雄綜合實力對比分析13.20 秒看懂中國大學 10 年排行榜變化14.航空公司客戶價值分析15.電子商務網站用戶行為分析及服務推薦16.關於地震的爬蟲數據分析實戰
  • 用Python (scikit-learn) 做PCA分析
    ,所以在應用主成分分析之前,需要對數據中的特徵進行尺度分析。主成分分析受尺度影響,因此在應用主成分分析之前,需要對數據中的特徵進行尺度分析。你可以將數據轉換到單位尺度(均值= 0和方差= 1),這是許多機器學習算法的最優性能的要求。StandardScaler幫助標準化數據集的特性。注意,你適合於訓練集,並在訓練和測試集上進行轉換。
  • Python數據分析—apply函數
    在對海量數據進行分析的過程中,我們可能要把文本型的數據處理成數值型的數據,方便放到模型中進行使用。
  • 一文看懂怎麼用 Python 做數據分析
    作者 | 藍鯨網站分析博客來源 | http://bluewhale.cc/2017-04-21/use-python-for-data-analysis-like-excel-3.html常遇到兩類朋友。一類是會爬蟲但不知道如何進一步做數據分析的,一類是平常用 Excel 做分析但不太會用 Python 分析的。
  • Python入門指南教程:10天學會使用python做爬蟲!免費領取!
    從去年開始,公眾號鋪天蓋地的python廣告,讓很多行外人也知道了python這個東西,python語言開始變得無所不能,剛畢業的新手用python能做什麼?對於圈外人聽起來好像很有誘惑力,每天幾小時,學習下來能做很多很多牛逼的事,甚至升職加薪,人生趟贏。但是,事情真的這麼簡單嗎?前些天我弟弟突然聊天,推薦我學python,我把聊天截圖給了學計算機的楊先生。楊先生的解釋:python和C語言、java一樣是一門程式語言。學會了或許可以三分鐘做好excel的數據分析。
  • Stata-Python交互-3:如何安裝Python宏包
    較為系統地介紹了 Stata 與 Python 的交互方式,包括:如何配置你的軟體、如何實現 Stata 與 Python 數據集互通、如何調用 Python 工具包、如何進行機器學習分析等。溫馨提示: 文中連結在微信中無法生效。請點擊底部「閱讀原文」。
  • python數據分析專題 (9):numpy基礎
    NumPy(Numerical Python的簡稱)是高性能科學計算和數據分析的基礎包。NumPy最重要的一個特點就是其N維數組對象(即ndarray),該對象是一個快速而靈活的大數據集容器。新手可能不理解這句話的含義,這個需要慢慢去理解 。總之,知道numpy是python數據分析最重要的基礎包就可以了。
  • Python數據分析相關資料整理(博客&視頻連結)
    相關中文資源如下:1.python工作集成環境包 【漫畫】手把手教你如何安裝Pythonpycharm安裝以及簡單使用教程python新手傻瓜式開發環境Anaconda2.python數據分析相關庫(Pandas