愛鋒貝

 找回密碼
 立即注冊

只需一步,快速開始

扫一扫,极速登录

查看: 702|回復: 1
打印 上一主題 下一主題
收起左側

2023美賽春季賽Y題完整原創(chuàng)內容 數據代碼思路 加賽二手帆船

[復制鏈接]

1371

主題

1451

帖子

5664

積分

Rank: 8Rank: 8

跳轉到指定樓層
樓主
發(fā)表于 2023-4-3 16:31:09 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

一鍵注冊,加入手機圈

您需要 登錄 才可以下載或查看,沒有帳號?立即注冊   

x

數據如下:


思路如下:
先來看第一問。首先我們要明確,這種數據分析類的題目,無非就是分類、回歸、聚類、異常檢測這幾種,這題很明顯屬于回歸。接下來我們就要確定回歸模型的輸入和輸出,輸入就是我們說的自變量,輸出就是因變量。
我們來觀察一下附件,注意附件有兩個子表,對應兩種類型的帆船,也就是說我們要建立至少兩個模型。為什么說是至少兩個,因為你也可以針對每個地區(qū)各建一個模型。當然這些模型的原理都是一樣的。像品牌、型號、長度、年份、地區(qū)這些特征,就屬于模型輸入,價格就是模型輸出。要是你覺得附件提供的特征不夠,題干也說了,可以自己去找其他的特征。
接下來說說建模具體需要做哪些工作。我們已經確定了這一問是一個回歸問題,回歸問題的基本步驟是很明確的:
編碼->降維->回歸
無非就是這三步??赡苡型瑢W問怎么沒說數據清理,這里我們不分那么細,像歸一化、數據清理這些所謂的預處理過程,都算在編碼里面,這些是你在編碼的時候要考慮的事情。
編碼具體怎么做呢?也很簡單,對品牌型號這種離散特征我們就用one-hot編碼,對長度、年份這些連續(xù)特征我們做個歸一化就行。像地區(qū)這樣的特征,既可以當作離散特征做one-hot編碼,也可以將其轉化為經緯度,轉化為經緯度就相當于是連續(xù)特征,這題必須用多個連續(xù)特征來表示地區(qū),不然后面第三問沒法做。
下一步就是降維,這里沒啥好說的,直接主成分分析。
最后是做回歸。常見的回歸模型,無非就是多項式模型和樹模型,這里建議用多項式模型,因為樹模型相當于一個黑盒,你沒法知道每項特征的具體權重。第一問的題干要求我們explains the listing price,你用樹模型就沒法explain了。
下面看第二問。第二問分為兩部分,首先是討論地區(qū)是否對價格有影響,這一問直接用第一問的結果就行,我們根據地區(qū)這一特征的權重就知道是夠對價格有影響,以及有怎樣的影響。
接下來要討論對于不同型號的帆船,地區(qū)的的影響是否相同。這里我們針對不同型號的帆船分別建回歸模型,再觀察在這些回歸模型中,地區(qū)的權重是否相同。
當然,這里帆船型號太多了,我們不用對每種型號進行建模,只要對樣本多的幾種帆船建模就行。
再說下第三問。第三問首先要找數據,因為題目是沒給香港地區(qū)的價格數據的,我們要自己找。找到價格后套用第一問得到的回歸模型,地區(qū)特征帶入香港,來看看用回歸模型預測的價格與實際的價格是否一致,一致就說明我們給出用來表達地區(qū)的特征是useful的。
第三問后半段問的是香港對雙體船和單體船價格的區(qū)域效應是否一致,這題本質上問的是地區(qū)對雙體船和單體船價格的影響是否一致。我們觀察針對雙體船和單體船的回歸模型中地區(qū)特征的權重是否相同就可以。
四五兩問是開放性問題,我們針對一些特征的權重做些說明就可以了。

代碼如下:
# -*- coding: utf-8 -*-
# TODO: 打開excel文件并獲取數據
import xlrd

class Data:
    """
    數據類
    """
def __init__(self):
        # 讀表
        workbook = xlrd.open_workbook('y_data.xlsx')  # 打開excel文件
        self.worksheet = workbook.sheet_by_index(0)  # 讀第一個sheet
        self.rows = self.worksheet.nrows - 1  # 數據行數
        # 獲取自變量
        self.year_list = []  # 年份列表
        self.beam_list = []  # 船寬列表
        self.draft_list = []  # 吃水深度列表
        self.displacement_list = []  # 排水量列表
        self.sailarea_list = []  # 帆面積列表
        self.length_list = []  # 船長列表
        self.gdp_list = []  # GDP列表
        self.pergdp_list = []  # 人均GDP列表
        # 獲取因變量
        self.price_list = []  # 價格列表

    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):
        """
        獲取船長列表
        """
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):
        """
        獲取價格列表
        """
self.price_list = self.worksheet.col_values(9, 1,)

    def get_all(self):
        """
        獲取所有數據
        """
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()


-----------------------------
精選高品質二手iPhone,上愛鋒貝APP

0

主題

50

帖子

3

積分

Rank: 1

沙發(fā)
發(fā)表于 2023-4-3 18:09:46 | 只看該作者
有償就數據
精選高品質二手iPhone,上愛鋒貝APP
您需要登錄后才可以回帖 登錄 | 立即注冊   

本版積分規(guī)則

QQ|Archiver|手機版|小黑屋|愛鋒貝 ( 粵ICP備16041312號-5 )

GMT+8, 2025-2-9 00:59

Powered by Discuz! X3.4

© 2001-2013 Discuz Team. 技術支持 by 巔峰設計.

快速回復 返回頂部 返回列表