در این مقاله، ما می خواهیم پیاده سازی رگرسیون چندجمله ای با Turicreate را مورد بحث قرار دهیم.
رگرسیون چندجملهای: رگرسیون چندجمله ای نوعی تجزیه و تحلیل رگرسیون است که رابطه بین یک متغیر وابسته، بگوییم y، و یک متغیر مستقل، بگوییم x، را به عنوان یک چندجملهای درجه n مدلسازی میکند. این مفهوم به صورت زیر بیان میشود:
y = b0 + b1x1 + b2x12 + b3x13 + …… + bnx1n
[که در آن b0، b1، b2، …… bn ضرایب رگرسیون هستند]
حالا بیایید این مفهوم را عملی یاد بگیریم.
گام 1: برای پیاده سازی رگرسیون چندجمله ای با Turicreate ابتدا کتابخانههای مهم را وارد کنید و با استفاده از SArray و SFrame در turicreate، یک مجموعه داده بسیار کوچک ایجاد کنید که قصد داریم از آن برای انجام رگرسیون چندجملهای استفاده کنیم.
# importing required python libraries import turicreate import matplotlib.pyplot as plt import random # Generating datapoints X = [data for data in range(1, 21)] Y = [random.randrange(100, 1000, 1) for data in range(20)] # Creating Sarrays from the generated data points Xs = turicreate.SArray(X, dtype=float) Ys = turicreate.SArray(Y, dtype=float) print(f"""Xs : {Xs} \n-------------------------------------------------------------------------------------------\n Ys : {Ys}""")
گام 2: ترسیم دادههای ایجاد شده
# plotting the generated data plt.scatter(Xs, Ys) plt.show()
گام 3: ایجاد یک SFrame شامل ورودی، درجههای چندجملهای آن، و خروجی برای تنظیم مدل رگرسیون ما.
# Creating an Sframe where all the inputs and the polynomial degree and output def createSframe(inputs, pol_degree): datapoints = turicreate.SFrame({'x1': inputs}) for degree in range(2, pol_degree+1): datapoints[f'x{degree}'] = datapoints[f'x{degree-1}']*datapoints['x1'] return datapoints # Creating a SFrame with polynomial degree 20 data_points = createSframe(Xs, 20) data_points['y'] = Ys # showing the first 10 entries in the SFrame data_points.head()
گام 4: انطباق رگرسیون چندجملهای بر روی مجموعه داده ایجاد شده.
# Polynomial Regression features = [f'x{i}' for i in range(1, 21)] poly_model = turicreate.linear_regression.create( data_points, features=features, target='y')
گام 5: پیشبینی نتیجه با استفاده از مدل تنظیم شده و ذخیره نتیجه در SFrame.
# predicting the some data # Generating test datapoints test_X = [random.randrange(1, 60, 1) for data in range(20)] test_Xs = turicreate.SArray(X, dtype=float) test_data = createSframe(test_Xs, 5) data_points['predicted_y'] = poly_model.predict(test_data) data_points.head()
گام 6: اندازهگیری دقت نتیجه پیشبینی شده.
# Measuring the accuracy # Generating test datapoints test_X = [random.randrange(1, 60, 1) for data in range(20)] test_Xs = turicreate.SArray(X, dtype=float) test_data = createSframe(test_Xs, 20) poly_model.evaluate(data_points)
گام 7: تجسم نتایج رگرسیون چندجملهای با استفاده از نمودار پراکندگی و نمودار خطی دادههای ورودی و نتیجه پیشبینی شده.
plt.scatter(data_points['x1'], data_points['y']) plt.plot(data_points['x1'], data_points['predicted_y']) plt.show()