|
一鍵注冊(cè),加入手機(jī)圈
您需要 登錄 才可以下載或查看,沒(méi)有帳號(hào)?立即注冊(cè) ![](source/plugin/mapp_wechat/images/wechat_login.png)
x
2023美賽春季賽Y題完整原創(chuàng)內(nèi)容 數(shù)據(jù)代碼思路 加賽二手帆船-1.jpg (52.72 KB, 下載次數(shù): 116)
下載附件
2023-4-6 10:22 上傳
數(shù)據(jù)如下:
2023美賽春季賽Y題完整原創(chuàng)內(nèi)容 數(shù)據(jù)代碼思路 加賽二手帆船-2.jpg (143.29 KB, 下載次數(shù): 110)
下載附件
2023-4-6 10:22 上傳
思路如下:
先來(lái)看第一問(wèn)。首先我們要明確,這種數(shù)據(jù)分析類的題目,無(wú)非就是分類、回歸、聚類、異常檢測(cè)這幾種,這題很明顯屬于回歸。接下來(lái)我們就要確定回歸模型的輸入和輸出,輸入就是我們說(shuō)的自變量,輸出就是因變量。
我們來(lái)觀察一下附件,注意附件有兩個(gè)子表,對(duì)應(yīng)兩種類型的帆船,也就是說(shuō)我們要建立至少兩個(gè)模型。為什么說(shuō)是至少兩個(gè),因?yàn)槟阋部梢葬槍?duì)每個(gè)地區(qū)各建一個(gè)模型。當(dāng)然這些模型的原理都是一樣的。像品牌、型號(hào)、長(zhǎng)度、年份、地區(qū)這些特征,就屬于模型輸入,價(jià)格就是模型輸出。要是你覺(jué)得附件提供的特征不夠,題干也說(shuō)了,可以自己去找其他的特征。
接下來(lái)說(shuō)說(shuō)建模具體需要做哪些工作。我們已經(jīng)確定了這一問(wèn)是一個(gè)回歸問(wèn)題,回歸問(wèn)題的基本步驟是很明確的:
編碼->降維->回歸
無(wú)非就是這三步??赡苡型瑢W(xué)問(wèn)怎么沒(méi)說(shuō)數(shù)據(jù)清理,這里我們不分那么細(xì),像歸一化、數(shù)據(jù)清理這些所謂的預(yù)處理過(guò)程,都算在編碼里面,這些是你在編碼的時(shí)候要考慮的事情。
編碼具體怎么做呢?也很簡(jiǎn)單,對(duì)品牌型號(hào)這種離散特征我們就用one-hot編碼,對(duì)長(zhǎng)度、年份這些連續(xù)特征我們做個(gè)歸一化就行。像地區(qū)這樣的特征,既可以當(dāng)作離散特征做one-hot編碼,也可以將其轉(zhuǎn)化為經(jīng)緯度,轉(zhuǎn)化為經(jīng)緯度就相當(dāng)于是連續(xù)特征,這題必須用多個(gè)連續(xù)特征來(lái)表示地區(qū),不然后面第三問(wèn)沒(méi)法做。
下一步就是降維,這里沒(méi)啥好說(shuō)的,直接主成分分析。
最后是做回歸。常見(jiàn)的回歸模型,無(wú)非就是多項(xiàng)式模型和樹(shù)模型,這里建議用多項(xiàng)式模型,因?yàn)闃?shù)模型相當(dāng)于一個(gè)黑盒,你沒(méi)法知道每項(xiàng)特征的具體權(quán)重。第一問(wèn)的題干要求我們explains the listing price,你用樹(shù)模型就沒(méi)法explain了。
下面看第二問(wèn)。第二問(wèn)分為兩部分,首先是討論地區(qū)是否對(duì)價(jià)格有影響,這一問(wèn)直接用第一問(wèn)的結(jié)果就行,我們根據(jù)地區(qū)這一特征的權(quán)重就知道是夠?qū)r(jià)格有影響,以及有怎樣的影響。
接下來(lái)要討論對(duì)于不同型號(hào)的帆船,地區(qū)的的影響是否相同。這里我們針對(duì)不同型號(hào)的帆船分別建回歸模型,再觀察在這些回歸模型中,地區(qū)的權(quán)重是否相同。
當(dāng)然,這里帆船型號(hào)太多了,我們不用對(duì)每種型號(hào)進(jìn)行建模,只要對(duì)樣本多的幾種帆船建模就行。
再說(shuō)下第三問(wèn)。第三問(wèn)首先要找數(shù)據(jù),因?yàn)轭}目是沒(méi)給香港地區(qū)的價(jià)格數(shù)據(jù)的,我們要自己找。找到價(jià)格后套用第一問(wèn)得到的回歸模型,地區(qū)特征帶入香港,來(lái)看看用回歸模型預(yù)測(cè)的價(jià)格與實(shí)際的價(jià)格是否一致,一致就說(shuō)明我們給出用來(lái)表達(dá)地區(qū)的特征是useful的。
第三問(wèn)后半段問(wèn)的是香港對(duì)雙體船和單體船價(jià)格的區(qū)域效應(yīng)是否一致,這題本質(zhì)上問(wèn)的是地區(qū)對(duì)雙體船和單體船價(jià)格的影響是否一致。我們觀察針對(duì)雙體船和單體船的回歸模型中地區(qū)特征的權(quán)重是否相同就可以。
四五兩問(wèn)是開(kāi)放性問(wèn)題,我們針對(duì)一些特征的權(quán)重做些說(shuō)明就可以了。
代碼如下:
# -*- coding: utf-8 -*-
# TODO: 打開(kāi)excel文件并獲取數(shù)據(jù)
import xlrd
class Data:
"""
數(shù)據(jù)類
"""
def __init__(self):
# 讀表
workbook = xlrd.open_workbook('y_data.xlsx') # 打開(kāi)excel文件
self.worksheet = workbook.sheet_by_index(0) # 讀第一個(gè)sheet
self.rows = self.worksheet.nrows - 1 # 數(shù)據(jù)行數(shù)
# 獲取自變量
self.year_list = [] # 年份列表
self.beam_list = [] # 船寬列表
self.draft_list = [] # 吃水深度列表
self.displacement_list = [] # 排水量列表
self.sailarea_list = [] # 帆面積列表
self.length_list = [] # 船長(zhǎng)列表
self.gdp_list = [] # GDP列表
self.pergdp_list = [] # 人均GDP列表
# 獲取因變量
self.price_list = [] # 價(jià)格列表
def get_year(self):
"""
獲取年份列表
"""
self.year_list = self.worksheet.col_values(1, 1,)
def get_beam(self):
"""
獲取船寬列表
"""
self.beam_list = self.worksheet.col_values(2, 1,)
def get_draft(self):
"""
獲取吃水深度列表
"""
self.draft_list = self.worksheet.col_values(3, 1,)
def get_displacement(self):
"""
獲取排水量列表
"""
self.displacement_list = self.worksheet.col_values(4, 1,)
def get_sailarea(self):
"""
獲取帆面積列表
"""
self.sailarea_list = self.worksheet.col_values(5, 1,)
def get_length(self):
"""
獲取船長(zhǎng)列表
"""
self.length_list = self.worksheet.col_values(6, 1,)
def get_gdp(self):
"""
獲取gdp列表
"""
self.gdp_list = self.worksheet.col_values(7, 1,)
def get_pergdp(self):
"""
獲取人均gdp列表
"""
self.pergdp_list = self.worksheet.col_values(8, 1,)
def get_price(self):
"""
獲取價(jià)格列表
"""
self.price_list = self.worksheet.col_values(9, 1,)
def get_all(self):
"""
獲取所有數(shù)據(jù)
"""
self.get_year()
self.get_beam()
self.get_draft()
self.get_displacement()
self.get_sailarea()
self.get_length()
self.get_gdp()
self.get_pergdp()
self.get_price()
----------------------------- |
|