我有如下2D数组数据(M&C为自变量):

Data enter image description here

我正试图使用Scikit MLPrepressor对这种回归(f(m,C)=y)进行建模.由于不知道如何对多变量输入进行建模,我try 将其建模为两个独立的单输入问题.例如,如何使用此输出预测C=2.3的曲线?如果有人能提出一种更优雅的方法来编程这个问题,我将不胜感激.

enter image description here

Code

# importing module
import numpy as np
import pandas as pd
from pandas import *
from matplotlib import pyplot as plt

from sklearn.model_selection import train_test_split
from sklearn.neural_network import MLPRegressor

# reading CSV file
#data = read_csv("data\Ex2.csv")
data = pd.DataFrame([[1,1,1],[2,4.28,5.65],[3,10.04,15.59],[4,18.38,32],[5,29.36,55.90],[6,43.06,88.18],[7,59.52,129.64],[8,78.79,181.02],[9,100.90,243],[10,125.89,316.22]], columns=['M','C=2.1','C=2.5'])

# converting column data to list
M = data['M'].values
C1 = data['C=2.1'].values
C2 = data['C=2.5'].values
C = np.column_stack((C1,C2))

M = M.reshape(M.shape[0],-1)

for i in range(0, 2):

    Xtrain, Xtest, Ytrain, Ytest = train_test_split(M, C[:,i], test_size=0.2, random_state=42)            
    mlp = MLPRegressor(random_state=42, activation='relu', hidden_layer_sizes=(100,100,100,100,100,100,100,100,8))    
    
    mlp.fit(Xtrain, Ytrain.ravel())    
    Yguess = mlp.predict(Xtest)
    Y = mlp.predict(M)
    
    #plt.plot(Xtest[:,0], Ytest, '.')
    #plt.plot(Xtest[:,0], Yguess, 'r.')
    plt.plot(M, C[:,i], 'o')
    plt.plot(M, Y, 'r')
 

Result enter image description here

推荐答案

我能解决以下问题.感谢@l'mahdi的帮助和@D.l的 comments

Code solution

# importing module
import numpy as np
import pandas as pd
from pandas import *
from matplotlib import pyplot as plt

from sklearn.model_selection import train_test_split
from sklearn.neural_network import MLPRegressor

# reading CSV file
data = pd.DataFrame([[1,1,1],[2,4.28,5.65],[3,10.04,15.59],[4,18.38,32],[5,29.36,55.90],[6,43.06,88.18],[7,59.52,129.64],[8,78.79,181.02],[9,100.90,243],[10,125.89,316.22]], columns=['M','C=2.1','C=2.5'])

# converting column data to array
M = data['M'].values
C1 = data['C=2.1'].values
C2 = data['C=2.5'].values

C = np.concatenate((C1,C2))
I = np.full_like(M,1)
MC1 = np.column_stack((M,I*2.1))
MC2 = np.column_stack((M,I*2.5))
MC3 = np.column_stack((M,I*2.4))
MC = np.concatenate((MC1,MC2))

MC = MC.reshape(MC.shape[0],-1)

mlp = MLPRegressor(random_state=0, activation='relu', hidden_layer_sizes=(100,100,100,100,100,100,100,100,100,100,100,100,8))    

mlp.fit(MC,C)  
Y = mlp.predict(MC3)
    
plt.plot(M, C1)
plt.plot(M, C2)
plt.plot(M, Y, 'r')

Result

enter image description here

Python相关问答推荐

Django:如何将一个模型的唯一实例创建为另一个模型中的字段

从流程获取定期更新

Pandas基于另一列的价值的新列

带有计数值的Pandas数据帧

customtkinter中使用的这个小部件的名称是什么

从今天起的future 12个月内使用Python迭代

Pydantic:如何将对象列表表示为dict(将列表序列化为dict)

Python中的函数中是否有充分的理由接受float而不接受int?

在应用循环中间保存pandas DataFrame

在Python中对分层父/子列表进行排序

运行总计基于多列pandas的分组和总和

log 1 p numpy的意外行为

Telethon加入私有频道

如何将一个动态分配的C数组转换为Numpy数组,并在C扩展模块中返回给Python

在单个对象中解析多个Python数据帧

如何指定列数据类型

Python中的变量每次增加超过1

与命令行相比,相同的Python代码在Companyter Notebook中运行速度慢20倍

如何更改groupby作用域以找到满足掩码条件的第一个值?

OpenCV轮廓.很难找到给定图像的所需轮廓