我正在学习如何使用scikit-learn开发反向传播神经网络。我仍然对如何在神经网络中实现k倍交叉验证感到困惑。我希望你们能帮助我。我的代码如下:
import numpy as np
from sklearn.model_selection import KFold
from sklearn.neural_network import MLPClassifier
f = open("seeds_dataset.txt")
data = np.loadtxt(f)
X=data[:,0:]
y=data[:,-1]
kf = KFold(n_splits=10)
X_train, X_test, y_train, y_test = X[train], X[test], y[train], y[test]
clf = MLPClassifier(solver='lbfgs', alpha=1e-5, hidden_layer_sizes=(5, 2), random_state=1)
clf.fit(X, y)
MLPClassifier(activation='relu', alpha=1e-05, batch_size='auto',
beta_1=0.9, beta_2=0.999, early_stopping=False,
epsilon=1e-08, hidden_layer_sizes=(5, 2), learning_rate='constant',
learning_rate_init=0.001, max_iter=200, momentum=0.9,
nesterovs_momentum=True, power_t=0.5, random_state=1, shuffle=True,
solver='lbfgs', tol=0.0001, validation_fraction=0.1, verbose=False,
warm_start=False)
Run Code Online (Sandbox Code Playgroud) Fused Lasso (Tibshirani 等人,2005)鼓励系数的稀疏性及其差异的稀疏性。
这是损失函数和正则化的公式:
第一项是 L2 (mse) 损失,第二项是对系数的 L1 惩罚(Lasso 正则化),最后一项是链接文章中引入的新项。
我如何用cvxpy包来模仿这个 - 具体来说,我如何实现最后一项?
分别有Lasso和Ridge Penalties 的示例代码。我大致了解这些代码是如何工作的,但有一些功能我不知道我应该如何决定使用哪一个。例如,让我们比较 Lasso 和 Ridge 惩罚代码。
# Lasso
import cvxpy as cp
import numpy as np
import matplotlib.pyplot as plt
def loss_fn(X, Y, beta):
return cp.norm2(cp.matmul(X, beta) - Y)**2
def regularizer(beta):
return cp.norm1(beta)
def objective_fn(X, Y, beta, lambd):
return loss_fn(X, Y, beta) + lambd * regularizer(beta)
def mse(X, Y, beta):
return (1.0 / X.shape[0]) * loss_fn(X, Y, beta).value …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用以下数据创建字典:
ListA = ['Name', 'Age', 'Gender']
ListB = ['Alex', '22', 'Male']
['Kelly','21', 'Female']
Run Code Online (Sandbox Code Playgroud)
ListB来自FileB,看起来像这样:
Alex 22 Male,Kelly 21 Female (值选项卡分隔,组逗号分隔)
预期产量:
{'Name' : 'Alex', 'Age' : '22', 'Gender' : 'Male',
'Name' : 'Kelly', 'Age': '21', 'Gender' : 'Female'
}
Run Code Online (Sandbox Code Playgroud)
我尝试了以下代码:
fileB = glob.glob(filename + '.txt')
dfun = {}
ListB = []
for f in fileB:
Lines = open(f, 'r').read().split(',')
for i in Lines:
Lines2 = i.split('\t')
ListB.append(Lines2)
print(ListB) # this gives me ListB in the format above.
for i in …Run Code Online (Sandbox Code Playgroud) 我试图将 NULL 值替换为零。
使用rf['Pt 1']=rf['Pt 1'].fillna(0,inplace=True)only 有助于将空白替换为 0。
但我仍然没有设法用零替换NULL(即字符串"Null",而不是值)。None
有人知道如何用 0 替换 NULL 吗?
rf['Pt 1']=rf['Pt 1'].fillna(0,inplace=True)
Run Code Online (Sandbox Code Playgroud)
我的输出结果:
Pt 1
0
NULL
990
991
996
995
992
992
992
993
993
993
991
991
989
NULL
NULL
NULL
995
993
Run Code Online (Sandbox Code Playgroud)