Vẽ đường hồi quy python
Bài viết này hướng dẫn vẽ đường hồi quy trong Python. Nó sẽ tập trung vào hồi quy tuyến tính. Chúng ta sẽ tìm hiểu các khái niệm quan trọng với code trong python. Sau khi hoàn thành, chúng tôi sẽ có thể xây dựng, cải thiện và tối ưu hóa các mô hình hồi quy Show
Hồi quy là gì?Trước khi thảo luận về cách vẽ đường hồi quy trong python, chúng ta nên hiểu hồi quy là gì Hồi quy là thuật toán đầu tiên chúng ta cần nắm vững nếu muốn trở thành nhà khoa học dữ liệu. Đây là một trong những thuật toán dễ học nhất nhưng đòi hỏi sự hiểu biết và nỗ lực để thành thạo nó Thuật ngữ “sự hồi quy” được Francis Galton sử dụng trong bài báo năm 1886 của ông “Sự hồi quy về sự tầm thường trong tầm vóc di truyền”. Anh ấy đã sử dụng thuật ngữ này trong bối cảnh hồi quy về giá trị trung bình Ngày nay hồi quy có một ý nghĩa rộng hơn. Đó là bất kỳ mô hình nào đưa ra dự đoán liên tục Hồi quy là một kỹ thuật tham số được sử dụng để dự đoán giá trị của biến kết quả Y dựa trên một hoặc nhiều biến dự đoán đầu vào X. Bản chất nó là tham số vì nó đưa ra các giả định nhất định dựa trên tập dữ liệu. Nếu tập dữ liệu tuân theo những giả định đó, hồi quy cho kết quả đáng kinh ngạc. Mặt khác, nó đấu tranh để cung cấp độ chính xác thuyết phục Phân tích hồi quy giúp chúng ta tìm ra câu trả lời cho
Các loại vấn đề hồi quyHồi quy tuyến tính cơ bảnNếu mô hình xử lý một đầu vào, được gọi là biến độc lập hoặc biến dự đoán và một biến đầu ra, được gọi là biến phụ thuộc hoặc biến phản hồi thì nó được gọi là Hồi quy tuyến tính đơn giản. Loại hồi quy tuyến tính này giả định rằng tồn tại mối quan hệ tuyến tính giữa yếu tố dự đoán và biến phản hồi có dạng Nhiều hồi quy tuyến tínhNếu vấn đề chứa nhiều hơn một biến đầu vào và một biến phản hồi, thì nó được gọi là Hồi quy đa tuyến tính Vẽ đường hồi quyMục đích của hồi quy tuyến tính là thiết lập mối quan hệ tuyến tính (một công thức toán học) giữa (các) biến dự đoán và biến phản hồi. Phương trình toán học này có thể được khái quát thành Y = β1 + β2X + ϵ X là biến đầu vào đã biết và nếu chúng ta có thể ước tính β1, β2 bằng một số phương pháp thì Y có thể được dự đoán. Để dự đoán kết quả trong tương lai, bằng cách sử dụng dữ liệu huấn luyện, chúng ta cần ước tính các tham số mô hình chưa biết (β1 β2 )
Nói chung, chúng được gọi là hệ số hồi quy Lỗi là một phần không thể tránh khỏi của quá trình đưa ra dự đoán. Chúng tôi không thể loại bỏ thuật ngữ lỗi (ϵ), nhưng chúng tôi cố gắng giảm nó xuống mức thấp nhất Để làm điều này, hồi quy sử dụng một kỹ thuật được gọi là Bình phương nhỏ nhất thông thường (OLS), Bình phương nhỏ nhất tổng quát, Bình phương nhỏ nhất theo phần trăm, Tổng bình phương nhỏ nhất, Độ lệch tuyệt đối nhỏ nhất, v.v. Trong bài viết này, chúng tôi đề cập đến kỹ thuật OLS khi sử dụng hồi quy tuyến tính/đa biến. Chúng tôi sẽ vẽ đường hồi quy trong python Kỹ thuật OLS cố gắng giảm tổng sai số bình phương ∑[Thực tế(y) – Dự đoán(y’)] ² bằng cách tìm giá trị tốt nhất có thể của các hệ số hồi quy (β1, β2, v.v.) OLS sử dụng lỗi bình phương có các thuộc tính toán học tốt, do đó giúp dễ dàng phân biệt và tính toán độ dốc giảm dần. Nó cũng dễ phân tích và tính toán nhanh hơn, tôi. e. nó có thể được áp dụng nhanh chóng cho các tập dữ liệu có hàng nghìn tính năng. Hơn nữa, việc giải thích OLS dễ dàng hơn nhiều so với các kỹ thuật hồi quy khác Phân tích đồ họa của các biếnTrước khi lập mô hình hồi quy và vẽ đường hồi quy trong python, chúng ta cần hiểu về biến độc lập (predictors) và biến phụ thuộc. Cách tốt nhất để làm điều đó thông qua hình dung hành vi của họ là thông qua
Các giả định được đưa ra trong hồi quy là gì?Hồi quy là một kỹ thuật tham số, vì vậy nó đưa ra các giả định. Sự hiện diện của các giả định này làm cho hồi quy trở nên khá hạn chế và có điều kiện đáp ứng các giả định này. Một khi các giả định này bị vi phạm, hồi quy sẽ đưa ra các dự đoán sai lệch, thất thường. Nếu dữ liệu vi phạm các giả định hồi quy này, một giải pháp rõ ràng là sử dụng các thuật toán dựa trên cây để nắm bắt khá tốt tính phi tuyến tính Chúng tôi cũng có thể kiểm tra chỉ số hiệu suất để ước tính vi phạm Hãy xem xét các giả định và diễn giải của đồ thị hồi quy và vẽ đồ thị đường hồi quy trong python Mối quan hệ tuyến tính và cộngTồn tại giữa biến phản hồi (Y) và yếu tố dự đoán (X). Theo tuyến tính, điều đó có nghĩa là sự thay đổi của Y khi thay đổi 1 đơn vị trong X là không đổi. Nếu chúng ta khớp một mô hình tuyến tính với một tập dữ liệu phi tuyến tính, không bổ sung, thì thuật toán hồi quy sẽ không nắm bắt được xu hướng về mặt toán học, do đó dẫn đến một mô hình không hiệu quả Ngoài ra, điều này sẽ dẫn đến dự đoán sai trên tập dữ liệu không nhìn thấy Bằng phép cộng, nó đề cập đến tác động của X lên Y không phụ thuộc vào các biến khác Làm cách nào để kiểm tra mối quan hệ tuyến tính và cộng?Tìm các biểu đồ giá trị còn lại so với giá trị được trang bị dư vs. Biểu đồ giá trị được trang bịBiểu đồ phân tán hiển thị phân phối của phần dư (lỗi) so với giá trị phù hợp (giá trị dự đoán). Nó tiết lộ những hiểu biết hữu ích khác nhau bao gồm cả các giá trị ngoại lệ. Các ngoại lệ trong biểu đồ này được dán nhãn theo số quan sát của chúng, giúp chúng dễ dàng phát hiện Lý tưởng nhất là cốt truyện này không nên hiển thị bất kỳ mẫu nào. Nếu tồn tại bất kỳ hình dạng nào (đường cong, hình chữ U), điều đó cho thấy dữ liệu không tuyến tính. Điều đó có nghĩa là mô hình không nắm bắt được các hiệu ứng phi tuyến. Nhưng nếu bạn thấy sự phi tuyến tính trong tập dữ liệu. Ngoài ra, nếu đồ thị có hình phễu rõ ràng, hãy coi đó là dấu hiệu của phương sai không cố định i. e. tính không đồng nhất Hình ảnh cho số dư Vs giá trị được trang bị bước. để khắc phục vấn đề phi tuyến tính, chúng ta có thể thực hiện phép biến đổi phi tuyến tính của các yếu tố dự báo, chẳng hạn như log (X), √X hoặc X² biến đổi biến phụ thuộc Nếu dữ liệu của bạn bị phi tuyến tính, hãy chuyển đổi các biến phụ thuộc bằng cách sử dụng sqrt, log, square, v.v. Ngoài ra, chúng tôi có thể bao gồm các thuật ngữ đa thức (X, X², X³) trong mô hình của bạn để thu được hiệu ứng phi tuyến tính Các thuật ngữ lỗi phải có phương sai không đổiViệc không có phương sai không đổi trong các số hạng sai số dẫn đến phương sai thay đổi. Nói chung, phương sai không cố định phát sinh khi có các giá trị ngoại lệ hoặc giá trị đòn bẩy cực đoan Các giá trị này có trọng lượng quá lớn, do đó ảnh hưởng không tương xứng đến hiệu suất của mô hình. Khi hiện tượng này xảy ra, khoảng tin cậy cho dự đoán ngoài mẫu có xu hướng rộng hoặc hẹp một cách phi thực tế Làm thế nào để kiểm tra phương sai thay đổi?
Quy mô vị trí lô đấtBiểu đồ này cho thấy phần dư được lan truyền như thế nào cùng với phạm vi của các yếu tố dự đoán. Nó tương tự như biểu đồ giá trị còn lại so với giá trị phù hợp ngoại trừ nó sử dụng các giá trị còn lại được tiêu chuẩn hóa. Chúng ta cần chứng thực những phát hiện của âm mưu này với hình phễu trong phần dư so với. giá trị được trang bị Lý tưởng nhất là cốt truyện này không nên hiển thị bất kỳ mẫu nào. Nếu không có sự hiện diện của một lỗi mẫu được phân phối bình thường. Tuy nhiên, nếu biểu đồ hiển thị bất kỳ mẫu rõ ràng nào (có thể là hình phễu), thì điều đó có nghĩa là phân phối lỗi không bình thường Hình ảnh cho Lô vị trí tỷ lệ bước. để khắc phục vấn đề về phương sai thay đổi, hãy biến đổi biến phản hồi (Y) bằng cách sử dụng sqrt, log, square, v.v. Ngoài ra, chúng ta có thể sử dụng phương pháp bình phương nhỏ nhất có trọng số để giải quyết vấn đề này Không được có tương quan giữa các biến độc lậpĐa cộng tuyến là sự hiện diện của mối tương quan trong các biến độc lập. Nếu các biến có tương quan với nhau, mô hình sẽ cực kỳ khó xác định tác động thực sự của X đối với Y hoặc tìm ra biến nào đang góp phần dự đoán biến phản hồi Ngoài ra, sự hiện diện của các yếu tố dự đoán tương quan có xu hướng làm tăng các lỗi tiêu chuẩn. Với các sai số chuẩn lớn, khoảng tin cậy trở nên rộng hơn dẫn đến ước tính các tham số độ dốc kém chính xác hơn Ngoài ra, khi các yếu tố dự đoán có tương quan, hệ số hồi quy ước tính của một biến tương quan phụ thuộc vào yếu tố dự đoán nào khác có sẵn trong mô hình. Nếu điều này xảy ra, chúng ta sẽ kết luận sai rằng một biến ảnh hưởng mạnh/yếu đến biến mục tiêu Làm thế nào để kiểm tra đa cộng tuyến?
bước. để khắc phục vấn đề đa cộng tuyến, sử dụng ma trận tương quan để kiểm tra các biến tương quan. Giả sử các biến A và B có tương quan cao. Bây giờ, thay vì loại bỏ một trong số chúng, hãy sử dụng phương pháp này. Tìm mối tương quan trung bình của A và B với các biến còn lại. Biến nào có giá trị trung bình cao hơn so với các biến khác thì loại bỏ. Ngoài ra, chúng ta có thể sử dụng các phương pháp hồi quy bị phạt chẳng hạn như thòng lọng, sườn núi, lưới đàn hồi, v.v. Các điều khoản lỗi phải không tương quanLỗi tại ∈t không được chỉ ra lỗi tại ∈t+1. Sự hiện diện của mối tương quan trong các thuật ngữ lỗi được gọi là Autocorrelation. Nó ảnh hưởng mạnh đến hệ số hồi quy và giá trị sai số chuẩn. Nó làm cho khoảng tin cậy và khoảng dự đoán hẹp hơn Khoảng tin cậy hẹp hơn có nghĩa là khoảng tin cậy 95% sẽ có xác suất nhỏ hơn 0. 95 rằng nó sẽ chứa giá trị thực của các hệ số Ngoài ra, các lỗi tiêu chuẩn thấp hơn sẽ khiến các giá trị p được liên kết thấp hơn thực tế. Điều này sẽ khiến chúng ta kết luận sai một thông số có ý nghĩa thống kê. Nó làm giảm đáng kể độ chính xác của mô hình. Điều này thường xảy ra trong các mô hình chuỗi thời gian trong đó thời điểm tiếp theo phụ thuộc vào thời điểm trước đó Làm thế nào để kiểm tra tự tương quan?
Biến phụ thuộc và số hạng sai số phải có phân phối chuẩnSự hiện diện của phân phối không bình thường cho thấy rằng có một số điểm dữ liệu bất thường phải được nghiên cứu kỹ lưỡng để tạo ra một mô hình tốt hơn Sự hiện diện của các số hạng sai số không phân phối chuẩn dẫn đến khoảng tin cậy quá rộng hoặc quá hẹp. Mức độ tin cậy không ổn định dẫn đến khó ước tính các hệ số dựa trên việc tối thiểu hóa bình phương nhỏ nhất Làm thế nào để kiểm tra phân phối bình thường?
Cốt truyện QQ bình thườngq-q hoặc quantile-quantile là biểu đồ phân tán giúp chúng tôi xác thực giả định về phân phối chuẩn. Nó sử dụng các giá trị tiêu chuẩn của phần dư để xác định phân phối lỗi bình thường. Lý tưởng nhất là biểu đồ này nên hiển thị một đường thẳng. Một đường cong, méo cho thấy phần dư có phân phối không bình thường Hình ảnh cho âm mưu q-q bước. để khắc phục sự cố nếu lỗi không được phân phối bình thường thông qua phép biến đổi phi tuyến tính của cả hai biến phản hồi hoặc biến dự đoán Diễn giải phần dư so với cốt truyện đòn bẩyBiểu đồ thặng dư so với đòn bẩy còn được gọi là biểu đồ Khoảng cách của Cook. Khoảng cách của Cook cố gắng xác định các điểm có ảnh hưởng nhiều hơn các điểm khác. Những điểm có ảnh hưởng như vậy có xu hướng tác động khá lớn đến đường hồi quy. Các giá trị lớn được đánh dấu bởi khoảng cách của Cook có thể cần điều tra thêm Hình ảnh bước. để giải quyết vấn đề đối với các quan sát có ảnh hưởng không có gì ngoài ngoại lệ là xóa các hàng đó. Ngoài ra, chúng ta có thể thu nhỏ quan sát ngoại lệ với giá trị lớn nhất trong dữ liệu hoặc coi các giá trị đó là giá trị bị thiếu. Việc coi các điểm dữ liệu là ngoại lệ đòi hỏi kiến thức về miền tốt Làm thế nào để biết liệu mô hình hồi quy có phù hợp nhất với dữ liệu của bạn hay không?Các số liệu được sử dụng để xác định mức độ phù hợp của mô hình có thể có các giá trị khác nhau dựa trên loại dữ liệu. Do đó, chúng ta cần phải cực kỳ cẩn thận trong khi giải thích phân tích hồi quy Sau đây là một số số liệu cùng với vẽ đường hồi quy trong python để đánh giá mô hình hồi quy của bạn
Điều quan trọng là mô hình phải có ý nghĩa thống kê trước khi chúng ta có thể tiếp tục và sử dụng nó để dự đoán biến phụ thuộc, nếu không, độ tin cậy của các giá trị dự đoán từ mô hình đó sẽ giảm và có thể được hiểu là một sự kiện ngẫu nhiên
THỐNG KÊTIÊU CHUẨNR-SquaredCàng cao càng tốt (> 0. 70)Adj R-SquaredCàng cao càng tốtF-StatisticCàng cao càng tốtStd. Lỗi càng gần 0 thì thống kê càng tốt Nên lớn hơn 1. 96 cho giá trị p nhỏ hơn 0. 05AICCàng thấp càng tốtBICCàng thấp càng tốtMallows CpSẽ gần với số lượng yếu tố dự đoán trong mô hìnhMAECàng thấp càng tốtMSE (Sai số bình phương trung bình)Càng thấp càng tốtĐộ chính xác tối thiểuCao hơn càng tốtVấn đề ví dụ về vẽ đường hồi quy trong PythonHãy sử dụng kiến thức lý thuyết của chúng tôi và tạo ra một mô hình thực tế. Chúng tôi cũng sẽ vẽ đường hồi quy trong python Đối với phân tích này, chúng tôi sẽ sử dụng bộ dữ liệu kim cương. Bộ dữ liệu này có thể được tải xuống từ đây Hãy tải tập dữ liệu và thực hiện phân tích dữ liệu ban đầu import numpy as np import pandas as pd import seaborn as sns import matplotlib.pyplot as plt %matplotlib inline import warnings %config InlineBackend.figure_format = 'png' #set 'png' here when working on notebook warnings.filterwarnings('ignore') # Set some parameters to get good visuals - style to ggplot and size to 15,10 plt.style.use('ggplot') plt.rcParams['figure.figsize'] = (4, 3) #load the file and set the first column as the index train = pd.read_csv(r"C:UserspiushDesktopDatasetAssignment 1diamonds.csv",index_col = 0) train.head() caratcắt màu sắc rõ nétđộ sâubảnggiáxyz10. 23lý tưởngESI261. 555. 03263. 953. 982. 4320. 21Cao cấpESI159. 861. 03263. 893. 842. 3130. 23TốtEVS156. 965. 03274. 054. 072. 3140. 29Cao cấpIVS262. 458. 03344. 204. 232. 6350. 31TốtJSI263. 358. 03354. 344. 352. 75 print ("nn---------------------") print ("TRAIN SET INFORMATION") print ("---------------------") print ("Shape of training set:", train.shape, "n") print ("Column Headers:", list(train.columns.values), "n") print (train.dtypes) --------------------- TRAIN SET INFORMATION --------------------- Shape of training set: (53940, 10) Column Headers: ['carat', 'cut', 'color', 'clarity', 'depth', 'table', 'price', 'x', 'y', 'z'] carat float64 cut object color object clarity object depth float64 table float64 price int64 x float64 y float64 z float64 dtype: object Vì vậy, có 53940 quan sát và 10 biến khác nhau Các loại biến khác nhau là. 'carat', 'cắt', 'màu', 'độ trong', 'độ sâu', 'bảng', 'giá', 'x', 'y', 'z' import re missing_values = [] nonumeric_values = [] print ("TRAINING SET INFORMATION") print ("========================n") for column in train: # Find all the unique feature values uniq = train[column].unique() print ("'{}' has {} unique values" .format(column,uniq.size)) if (uniq.size > 10): print("~~Listing up to 10 unique values~~") print (uniq[0:10]) print ("n-----------------------------------------------------------------------n") # Find features with missing values if (True in pd.isnull(uniq)): s = "{} has {} missing" .format(column, pd.isnull(train[column]).sum()) missing_values.append(s) # Find features with non-numeric values for i in range (1, np.prod(uniq.shape)): if (re.match('nan', str(uniq[i]))): break if not (re.search('(^d+.?d*$)|(^d*.?d+$)', str(uniq[i]))): nonumeric_values.append(column) break print ("n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n") print ("Features with missing values:n{}nn" .format(missing_values)) print ("Features with non-numeric values:n{}" .format(nonumeric_values)) print ("n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n") TRAINING SET INFORMATION ======================== 'carat' has 273 unique values ~~Listing up to 10 unique values~~ [ 0.23 0.21 0.29 0.31 0.24 0.26 0.22 0.3 0.2 0.32] ----------------------------------------------------------------------- 'cut' has 5 unique values ['Ideal' 'Premium' 'Good' 'Very Good' 'Fair'] ----------------------------------------------------------------------- 'color' has 7 unique values ['E' 'I' 'J' 'H' 'F' 'G' 'D'] ----------------------------------------------------------------------- 'clarity' has 8 unique values ['SI2' 'SI1' 'VS1' 'VS2' 'VVS2' 'VVS1' 'I1' 'IF'] ----------------------------------------------------------------------- 'depth' has 184 unique values ~~Listing up to 10 unique values~~ [ 61.5 59.8 56.9 62.4 63.3 62.8 62.3 61.9 65.1 59.4] ----------------------------------------------------------------------- 'table' has 127 unique values ~~Listing up to 10 unique values~~ [ 55. 61. 65. 58. 57. 56. 54. 62. 59. 63.] ----------------------------------------------------------------------- 'price' has 11602 unique values ~~Listing up to 10 unique values~~ [326 327 334 335 336 337 338 339 340 342] ----------------------------------------------------------------------- 'x' has 554 unique values ~~Listing up to 10 unique values~~ [ 3.95 3.89 4.05 4.2 4.34 3.94 4.07 3.87 4. 4.25] ----------------------------------------------------------------------- 'y' has 552 unique values ~~Listing up to 10 unique values~~ [ 3.98 3.84 4.07 4.23 4.35 3.96 4.11 3.78 4.05 4.28] ----------------------------------------------------------------------- 'z' has 375 unique values ~~Listing up to 10 unique values~~ [ 2.43 2.31 2.63 2.75 2.48 2.47 2.53 2.49 2.39 2.73] ----------------------------------------------------------------------- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Features with missing values: [] Features with non-numeric values: ['cut', 'color', 'clarity'] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Check for duplicate index or rows idsUnique = len(set(train.index)) idsTotal = train.shape[0] idsDupli = idsTotal - idsUnique print("There are " + str(idsDupli) + " duplicate IDs for " + str(idsTotal) + " total entries") ________số 8 Thống kê mô tả #get summary of numerical variables train.describe() caratđộ sâubảngpricexyzcount53940. 00000053940. 00000053940. 00000053940. 00000053940. 00000053940. 00000053940. 000000mean0. 79794061. 74940557. 4571843932. 7997225. 7311575. 7345263. 538734std0. 4740111. 4326212. 2344913989. 4397381. 1217611. 1421350. 705699min0. 20000043. 00000043. 000000326. 0000000. 0000000. 0000000. 00000025%0. 40000061. 00000056. 000000950. 0000004. 7100004. 7200002. 91000050%0. 70000061. 80000057. 0000002401. 0000005. 7000005. 7100003. 53000075%1. 04000062. 50000059. 0000005324. 2500006. 5400006. 5400004. 040000max5. 01000079. 00000095. 00000018823. 00000010. 74000058. 90000031. 800000 Chúng ta có thể biết được độ lệch có thể có trong dữ liệu bằng cách so sánh giá trị trung bình với giá trị trung bình, tôi. e. con số 50%. Có vẻ như Giá bị lệch #load the file and set the first column as the index train = pd.read_csv(r"C:UserspiushDesktopDatasetAssignment 1diamonds.csv",index_col = 0)0 #load the file and set the first column as the index train = pd.read_csv(r"C:UserspiushDesktopDatasetAssignment 1diamonds.csv",index_col = 0)1 #load the file and set the first column as the index train = pd.read_csv(r"C:UserspiushDesktopDatasetAssignment 1diamonds.csv",index_col = 0)2 #load the file and set the first column as the index train = pd.read_csv(r"C:UserspiushDesktopDatasetAssignment 1diamonds.csv",index_col = 0)3 Ta có 'x','y','z' là 0. hãy để chúng tôi kiểm tra xem có bao nhiêu và đối phó với các ngoại lệ #load the file and set the first column as the index train = pd.read_csv(r"C:UserspiushDesktopDatasetAssignment 1diamonds.csv",index_col = 0)4 #load the file and set the first column as the index train = pd.read_csv(r"C:UserspiushDesktopDatasetAssignment 1diamonds.csv",index_col = 0)5 #load the file and set the first column as the index train = pd.read_csv(r"C:UserspiushDesktopDatasetAssignment 1diamonds.csv",index_col = 0)6 #load the file and set the first column as the index train = pd.read_csv(r"C:UserspiushDesktopDatasetAssignment 1diamonds.csv",index_col = 0)7 caraprice10. 2332620. 2132630. 2332740. 2933450. 31335 #load the file and set the first column as the index train = pd.read_csv(r"C:UserspiushDesktopDatasetAssignment 1diamonds.csv",index_col = 0)8 Chúng ta thấy ngay rằng trọng lượng carat bị lệch dương. hầu hết các viên kim cương đều có trọng lượng khoảng 1 carat hoặc thấp hơn nhưng có những trường hợp kim cương lớn hơn. Cốt truyện ở trên có các thùng khá rộng và dường như không có bất kỳ dữ liệu nào vượt quá kích thước 3 carat. 5 Chúng tôi có thể cố gắng khai thác thêm biểu đồ ngoài giờ bằng cách thêm một số đối số bổ sung để kiểm soát kích thước của các thùng và giới hạn của trục x BoxplotsBoxplots là một loại biểu đồ đơn biến khác để tóm tắt các phân phối dữ liệu số bằng đồ họa. Hãy tạo một boxplot carat bằng cách sử dụng pd. hàm boxplot() #load the file and set the first column as the index train = pd.read_csv(r"C:UserspiushDesktopDatasetAssignment 1diamonds.csv",index_col = 0)9 Hộp trung tâm của boxplot đại diện cho 50% quan sát ở giữa, thanh trung tâm là trung vị và các thanh ở cuối các đường chấm chấm (râu ria) gói gọn phần lớn các quan sát. Các vòng tròn nằm ngoài phần cuối của râu là các điểm dữ liệu có thể là ngoại lệ. Trong trường hợp này, tập dữ liệu của chúng tôi có hơn 50.000 quan sát và chúng tôi thấy nhiều điểm dữ liệu nằm ngoài râu trên cùng. Có lẽ chúng tôi sẽ không muốn phân loại tất cả những điểm đó là ngoại lệ, nhưng một số ít viên kim cương từ 4 cara trở lên chắc chắn vượt xa tiêu chuẩn train.head()0 Đây là phân phối đuôi dài, với mức độ tập trung cao của các quan sát dưới mốc 5.000 đô la Mỹ. Phân phối lệch phải với một lượng nhỏ giá rất lớn đẩy giá trị trung bình lên, trong khi giá trị trung bình vẫn là thước đo mạnh mẽ hơn về trung tâm phân phối Chúng ta có thể thấy rằng dữ liệu cho thấy một số bằng chứng về tính hai chiều trên thang đo log10. Vì vậy, có hai loại kim cương khác nhau dành cho người mua giàu hơn và nghèo hơn train.head()1 train.head()2 Đó là một mối quan hệ phi tuyến tính và độ phân tán (phương sai) của mối quan hệ này cũng tăng lên khi kích thước carat tăng lên. Mặc dù kích thước/trọng lượng của bộ kim cương là một yếu tố quan trọng, nhưng mối quan hệ này là phi tuyến tính. Do đó, chạy một mô hình tuyến tính sẽ là một ý tưởng tồi Lô mật độBiểu đồ mật độ hiển thị phân phối của một biến số với một đường cong liên tục. Nó tương tự như biểu đồ nhưng không có các ngăn riêng biệt, biểu đồ mật độ cho hình ảnh rõ hơn về hình dạng cơ bản của phân phối. Tạo biểu đồ mật độ với chuỗi. cốt truyện(loại=”mật độ”) train.head()3 train.head()4 train.head()5 Biểu đồ trên cho thấy mối tương quan 92% giữa giá và carat. Tùy thuộc vào chúng ta nếu chúng ta nên coi % tương quan này là mức gây hại. Thông thường, tương quan trên 80% (chủ quan) được coi là cao hơn, do đó, chúng tôi sẽ không bỏ qua sự kết hợp này Vẽ đường hồi quy trong Python – 1 biến phụ thuộctrain.head()6 train.head()7
train.head()8 train.head()9 Trong số tất cả, Dư vs. Giá trị được trang bị thu hút sự chú ý của chúng tôi. Mặc dù không chính xác, nhưng chúng tôi nhận thấy các dấu hiệu của phương sai thay đổi trong dữ liệu này Nhớ hình dạng phễu? . Để khắc phục tình trạng này, chúng ta sẽ xây dựng một mô hình khác với log(y) Vẽ đường hồi quy trong Python – Nhật ký của biến mục tiêuprint ("nn---------------------") print ("TRAIN SET INFORMATION") print ("---------------------") print ("Shape of training set:", train.shape, "n") print ("Column Headers:", list(train.columns.values), "n") print (train.dtypes)0 #load the file and set the first column as the index train = pd.read_csv(r"C:UserspiushDesktopDatasetAssignment 1diamonds.csv",index_col = 0)7 caratpricelog_pricelog_carat10. 233265. 7899600. 20701420. 213265. 7899600. 19062030. 233275. 7930140. 20701440. 293345. 8141310. 25464250. 313355. 8171110. 270027 print ("nn---------------------") print ("TRAIN SET INFORMATION") print ("---------------------") print ("Shape of training set:", train.shape, "n") print ("Column Headers:", list(train.columns.values), "n") print (train.dtypes)2 print ("nn---------------------") print ("TRAIN SET INFORMATION") print ("---------------------") print ("Shape of training set:", train.shape, "n") print ("Column Headers:", list(train.columns.values), "n") print (train.dtypes)3 print ("nn---------------------") print ("TRAIN SET INFORMATION") print ("---------------------") print ("Shape of training set:", train.shape, "n") print ("Column Headers:", list(train.columns.values), "n") print (train.dtypes)4 print ("nn---------------------") print ("TRAIN SET INFORMATION") print ("---------------------") print ("Shape of training set:", train.shape, "n") print ("Column Headers:", list(train.columns.values), "n") print (train.dtypes)5 Hàm residplot() có thể là một công cụ hữu ích để kiểm tra xem mô hình hồi quy đơn giản có phù hợp với tập dữ liệu hay không. Nó phù hợp và loại bỏ một hồi quy tuyến tính đơn giản và sau đó vẽ các giá trị còn lại cho mỗi quan sát. Lý tưởng nhất là các giá trị này nên nằm rải rác ngẫu nhiên xung quanh y = 0 Nếu có một cấu trúc trong phần dư, điều đó cho thấy hồi quy tuyến tính đơn giản là không phù hợp Nhưng thật không may, điều này tạo ra một biểu đồ số dư so với các giá trị x. Tôi nghĩ rằng trong nhiều tình huống, biểu đồ này sẽ cho bạn biết điều tương tự như số dư so với giá trị phù hợp, nhưng đó không phải là thứ tôi đang tìm kiếm Đây là cách tạo nó với vanilla matplotlib print ("nn---------------------") print ("TRAIN SET INFORMATION") print ("---------------------") print ("Shape of training set:", train.shape, "n") print ("Column Headers:", list(train.columns.values), "n") print (train.dtypes)6 print ("nn---------------------") print ("TRAIN SET INFORMATION") print ("---------------------") print ("Shape of training set:", train.shape, "n") print ("Column Headers:", list(train.columns.values), "n") print (train.dtypes)7 ANOVA cho hồi quy tuyến tínhprint ("nn---------------------") print ("TRAIN SET INFORMATION") print ("---------------------") print ("Shape of training set:", train.shape, "n") print ("Column Headers:", list(train.columns.values), "n") print (train.dtypes)8 dfsum_sqmean_sqFPR(>F)carat1. 046977. 56805146977. 568051298297. 1378560. 0Residual53938. 08494. 4699230. 157486NaNNaN Đọc thêm print ("nn---------------------") print ("TRAIN SET INFORMATION") print ("---------------------") print ("Shape of training set:", train.shape, "n") print ("Column Headers:", list(train.columns.values), "n") print (train.dtypes)9 --------------------- TRAIN SET INFORMATION --------------------- Shape of training set: (53940, 10) Column Headers: ['carat', 'cut', 'color', 'clarity', 'depth', 'table', 'price', 'x', 'y', 'z'] carat float64 cut object color object clarity object depth float64 table float64 price int64 x float64 y float64 z float64 dtype: object0 Đầu tiên, người ta thường bắt gặp thuật ngữ “phân tích phương sai” khi công cụ dự đoán là phân loại, vì vậy bạn đang điều chỉnh mô hình y=α+βi y=α+βi trong đó ii xác định danh mục nào là giá trị của công cụ dự đoán. Nếu có kk hạng mục, bạn sẽ nhận được k−1k−1 bậc tự do ở tử số trong thống kê F và thường là n−kn−k bậc tự do ở mẫu số. Nhưng sự khác biệt giữa hồi quy và phân tích phương sai vẫn giống nhau đối với loại mô hình này Chúng tôi có hai hình dạng đường hầm trong cốt truyện của chúng tôi Vẽ đường hồi quy trong Python – Carat nhỏ hơn 0. 75Dưới đây chúng tôi chọn những viên kim cương có giá trị dưới carat trung bình và xem liệu mẫu có tốt hơn một chút không--------------------- TRAIN SET INFORMATION --------------------- Shape of training set: (53940, 10) Column Headers: ['carat', 'cut', 'color', 'clarity', 'depth', 'table', 'price', 'x', 'y', 'z'] carat float64 cut object color object clarity object depth float64 table float64 price int64 x float64 y float64 z float64 dtype: object1 --------------------- TRAIN SET INFORMATION --------------------- Shape of training set: (53940, 10) Column Headers: ['carat', 'cut', 'color', 'clarity', 'depth', 'table', 'price', 'x', 'y', 'z'] carat float64 cut object color object clarity object depth float64 table float64 price int64 x float64 y float64 z float64 dtype: object2 --------------------- TRAIN SET INFORMATION --------------------- Shape of training set: (53940, 10) Column Headers: ['carat', 'cut', 'color', 'clarity', 'depth', 'table', 'price', 'x', 'y', 'z'] carat float64 cut object color object clarity object depth float64 table float64 price int64 x float64 y float64 z float64 dtype: object3 --------------------- TRAIN SET INFORMATION --------------------- Shape of training set: (53940, 10) Column Headers: ['carat', 'cut', 'color', 'clarity', 'depth', 'table', 'price', 'x', 'y', 'z'] carat float64 cut object color object clarity object depth float64 table float64 price int64 x float64 y float64 z float64 dtype: object4 --------------------- TRAIN SET INFORMATION --------------------- Shape of training set: (53940, 10) Column Headers: ['carat', 'cut', 'color', 'clarity', 'depth', 'table', 'price', 'x', 'y', 'z'] carat float64 cut object color object clarity object depth float64 table float64 price int64 x float64 y float64 z float64 dtype: object5 Phần kết luậnChúng tôi đã tìm hiểu về các khái niệm về hồi quy tuyến tính và cách vẽ đồ thị của đường hồi quy trong python. Chúng tôi cũng đã triển khai mô hình bằng thư viện statsmodel Hy vọng bạn thích ví dụ của chúng tôi và cũng đã thử mã hóa mô hình. Hãy cho tôi biết phản hồi của bạn trong phần bình luận bên dưới Làm cách nào để vẽ sơ đồ dự đoán hồi quy trong Python?Do đó, việc tạo mô hình hồi quy tuyến tính trong Statsmodels yêu cầu các bước sau. . Nhập thư viện Statsmodels Xác định ma trận Y và X. . Thêm một cột không đổi vào ma trận X Gọi OLS() để xác định mô hình Gọi fit() để thực sự ước tính các tham số mô hình bằng cách sử dụng tập dữ liệu (vừa với dòng) Hiển thị kết quả Lệnh Python nào sẽ vẽ đường hồi quy?Các hàm vẽ mô hình hồi quy tuyến tính
. Các hàm này vẽ các biểu đồ tương tự, nhưng regplot() là hàm cấp trục và lmplot() là hàm cấp hình. regplot() and lmplot() . These functions draw similar plots, but regplot() is an axes-level function, and lmplot() is a figure-level function. |