亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

嘗試為我的模型找到最佳多項式回歸度時出現錯誤

嘗試為我的模型找到最佳多項式回歸度時出現錯誤

汪汪一只貓 2023-12-26 17:04:37
from sqlalchemy import create_engineimport osimport pandas as pdsnowflake_username = os.environ['SNOWFLAKE_USERNAME']snowflake_password = os.environ['SNOWFLAKE_PASSWORD']snowflake_account = os.environ['SNOWFLAKE_ACCOUNT']snowflake_warehouse = os.environ['SNOWFLAKE_WAREHOUSE']snowflake_database = 'test_db'snowflake_schema = 'public'if __name__ == '__main__':    engine = create_engine(        'snowflake://{user}:{password}@{account}/{db}/{schema}?warehouse={warehouse}'.format(            user=snowflake_username,            password=snowflake_password,            account=snowflake_account,            db=snowflake_database,            schema=snowflake_schema,            warehouse=snowflake_warehouse,        )    )    df = pd.DataFrame([('Mark', 10), ('Luke', 20)], columns=['name', 'balance'])    df.to_sql('TEST_TABLE', con=engine, schema='public', index=False, if_exists='append')每次我運行上面的腳本時,馬可福音和路加福音的記錄都會附加到我的test_db.public.test_table表中。
查看完整描述

1 回答

?
ABOUTYOU

TA貢獻1812條經驗 獲得超5個贊

如果你的 x 是一維列向量,np.polyfit()并且np.polyval()將完成工作。np.polyfit(x,y,order,full=True)返回殘差(我相信是殘差平方和)供您檢查最佳順序。您不需要第二次回歸擬合來獲得殘差。

注意,您選擇最小殘差的邏輯在工程師方面是可行的,但在數學上并不合理。這是因為誤差平方和 (SSE) 始終會隨著回歸量數量的增加而減小,因此您始終會從最大多項式階次獲得結果。您必須嘗試使用帶有懲罰的公式,以便在選擇模型時添加更多項(例如AIC或BIC標準)。然而,這部分完全由研究者自由選擇,當然超出了問題本身的范圍。

import numpy as np

import matplotlib.pyplot as plt


# get your x and y as np array

x = np.random.uniform(-1,1, 100)

y = x - x**2 + x**3 - x**4 + np.random.normal(0, 0.1, 100)


def poly_fit(n):

? ls_res=[]

? ls_coeff = []

? for i in range(2, n):

? ? coeff, res, _, _, _ = np.polyfit(x, y, i, full=True)

? ? ls_res.append(res)

? ? ls_coeff.append(coeff)


? # argmin should be taken from a penalized loss function

? # add it here

? return ls_coeff[np.argmin(ls_res)]


plt.scatter(x, y, color='red')

coeff = poly_fit(6)

plt.plot(np.sort(x), np.polyval(coeff, np.sort(x)), color='blue')

plt.title('Polynomial Regression results')

plt.xlabel('Position/level')

plt.ylabel('Salary')

plt.show()

https://img1.sycdn.imooc.com/658a974f000183db06390478.jpg

查看完整回答
反對 回復 2023-12-26
  • 1 回答
  • 0 關注
  • 130 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號