0.1 测试函数总结

本文深入探讨数据结构中的关键概念,包括二叉树、链表和二维数组的操作与应用。通过具体示例,如二叉树的深度计算、链表节点的删除以及二维数组的创建和赋值,展示了这些数据结构在实际编程中的使用方法。

记录测试代码

一、二叉树

int main() {
	int *returnSize = NULL;
	int **returnColumnSizes = NULL;
	struct TreeNode *root = NULL;
	struct TreeNode *left = NULL;
	struct TreeNode *right = NULL;
	struct TreeNode *right_r = NULL;
	struct TreeNode *right_l = NULL;
	returnSize = (int *)malloc(sizeof(4));
	returnColumnSizes = (int **)malloc(sizeof(int **));
	*returnColumnSizes = (int *)malloc(sizeof(int *));
	root = (struct TreeNode *)malloc(sizeof(struct TreeNode));
	left = (struct TreeNode *)malloc(sizeof(struct TreeNode));
	right = (struct TreeNode *)malloc(sizeof(struct TreeNode));
	right_r = (struct TreeNode *)malloc(sizeof(struct TreeNode));
	right_l = (struct TreeNode *)malloc(sizeof(struct TreeNode));

	right_r->val = 2;
	right_l->val = 3;
	right->val = 1;
	left->val = 4;
	root->val = 0;
	root->left = left;
	left->left = NULL;
	left->right = NULL;
	root->right = right;

	right->left = right_l;
	right->right = right_r;

	right_r->right = NULL;
	right_r->left = NULL;
	right_l->right = NULL;
	right_l->left = NULL;

	minDepth(root);

	return 0;
}
int main(void) 
{
	int *returnSize = NULL;
	int **returnColumnSizes = NULL;
	struct TreeNode *root = NULL;
	struct TreeNode *left = NULL;
	struct TreeNode *right = NULL;
	struct TreeNode *right_1 = NULL;
	struct TreeNode *right_2 = NULL;
	struct TreeNode *right_3 = NULL;

	returnSize = (int *)malloc(sizeof(4));
	returnColumnSizes = (int **)malloc(sizeof(int **));
	*returnColumnSizes = (int *)malloc(sizeof(int *));

	root = (struct TreeNode *)malloc(sizeof(struct TreeNode));
	right = (struct TreeNode *)malloc(sizeof(struct TreeNode));
	right_1 = (struct TreeNode *)malloc(sizeof(struct TreeNode));
	right_2 = (struct TreeNode *)malloc(sizeof(struct TreeNode));
	right_3 = (struct TreeNode *)malloc(sizeof(struct TreeNode));

	root->val    = -1;
	right->val   = 0;
	right_1->val = 1;
	right_2->val = 2;
	right_3->val = 3;

	root->right = right;
	root->left  = NULL;
	right->right = right_1;
	right->left = NULL;
	right_1->right = right_2;
	right_1->left = NULL;
	right_2->right = right_3;
	right_2->left = NULL;
	right_3->left = NULL;
	right_3->right = NULL;
	int len = minDepth(root);

	return 0;
}

二、链表

int main()
{
	int year = 0;
	struct ListNode *tmp;
	struct ListNode *root1 = NULL;
	struct ListNode *root2 = NULL;
	struct ListNode *root3 = NULL;
	struct ListNode *root4 = NULL;
	struct ListNode *root5 = NULL;

	root1 = (struct ListNode *)malloc(sizeof(struct ListNode));
	root2 = (struct ListNode *)malloc(sizeof(struct ListNode));
	root3 = (struct ListNode *)malloc(sizeof(struct ListNode));
	root4 = (struct ListNode *)malloc(sizeof(struct ListNode));
	root5 = (struct ListNode *)malloc(sizeof(struct ListNode));
	root1->next = root2;
	root1->val = 1;
	root2->next = root3;
	root2->val = 2;
	root3->next = root4;
	root3->val = 3;
	root4->next = root5;
	root4->val = 4;
	root5->next= NULL;
	root5->val = 5;
	tmp = removeNthFromEnd(root1, 2);

	return 0;
}

三、二维数组

一直有关于二维数组的困扰,今天抽时间总算理清楚了,有如下两种方式描述二维数组:

int main()
{
	// 法一:生成二维数组,直接赋值
	/* 
	int m = 5;
	int n = 2;
	int **pairs = (int **)malloc(sizeof(int *) * m);
	for (int i = 0; i < m; i++) {
		pairs[i] = (int *)malloc(sizeof(int) * n);
	}
	pairs[0][0] = 2;
	pairs[0][1] = 3;
	pairs[1][0] = 1;
	pairs[1][1] = 2;
	pairs[2][0] = 5;
	pairs[2][1] = 6;
	pairs[3][0] = 3;
	pairs[3][1] = 4;
	pairs[4][0] = 7;
	pairs[4][1] = 8;
	*/

	// 法二:生成二维数组,通过已有的定义数组赋值
	int pairs[5][2] = { {2,3}, {3,4},{1,2}, {5,6}, {7,8}};
	int m = 5;
	int n = 2;
	int **parisTmp = (int **)malloc(sizeof(int *) * m);
	for (int i = 0; i < m; i++) {
		parisTmp[i] = pairs[i];
	}
	int pairsSize = 5;
	int pairsColSize = 5;
	int ret = findLongestChain(parisTmp, pairsSize, &pairsColSize);
	printf("ret = %d\n", ret);
	return 0;
}
### 径向基函数 (RBF) 标准测试函数 径向基函数(Radial Basis Function, RBF)是一种广泛应用于机器学习中的技术,其核心思想是以某个中心点为中心,在输入空间中定义一个局部化的响应区域。这种特性使得它非常适合用于高维数据建模以及复杂模式识别任务。 #### RBF 的基本概念与公式 RBF 是一种基于距离度量的函数形式,通常表示为 \( \phi(r) = f(\|x-c\|) \),其中 \( c \) 表示中心点位置,\( r=\|x-c\| \) 表示欧几里得范数的距离[^1]。常见的 RBF 形式包括: - 高斯核: \[ \phi(r) = e^{-\beta \|x-c\|^2} \] - 多项式核: \[ \phi(r) = (\gamma \|x-c\|^2 + c_0)^d \] 这些不同的核函数可以根据具体的应用需求选择合适的参数配置。 --- #### Python 中实现 RBF 测试函数的方法 以下是两种典型的 RBF 应用场景下的代码实现方式: ##### 场景一:RBF 作为 SVM 的核函数 在支持向量机(Support Vector Machine, SVM)中,可以通过设置 `kernel='rbf'` 来使用 RBF 核函数。下面是一个简单的例子展示如何利用 scikit-learn 实现这一过程: ```python from sklearn.svm import SVC from sklearn.datasets import make_classification from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score # 创建分类数据集 X, y = make_classification(n_samples=1000, n_features=20, n_informative=2, n_redundant=10, random_state=42) # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # 使用 RBF 核的支持向量机模型 model = SVC(kernel='rbf', gamma='scale') model.fit(X_train, y_train) # 进行预测并计算准确率 y_pred = model.predict(X_test) accuracy = accuracy_score(y_test, y_pred) print(f"Accuracy with RBF kernel: {accuracy:.4f}") ``` 上述代码展示了如何通过调整超参数(如 `gamma` 和正则化系数 `C`),优化 RBF-SVM 模型的表现。 --- ##### 场景二:构建 RBF 神经网络 对于 RBF 网络而言,其实现涉及三个主要部分——隐藏层节点的选择、权重矩阵的学习以及最终输出阶段的设计。以下是一段完整的 RBF 网络实现流程: ```python import numpy as np from scipy.spatial.distance import cdist class RBFNetwork: def __init__(self, centers, spread): self.centers = centers self.spread = spread def gaussian(self, dists): return np.exp(-0.5 * (dists / self.spread)**2) def fit(self, X, y): distances = cdist(X, self.centers, 'euclidean') # 计算样本到各中心的距离 hidden_output = self.gaussian(distances) # 调用高斯基函数得到隐含层输出 # 解决最小二乘法求解权值 W pseudo_inverse = np.linalg.pinv(hidden_output.T @ hidden_output) weights = pseudo_inverse @ hidden_output.T @ y self.weights = weights.flatten() def predict(self, X): distances = cdist(X, self.centers, 'euclidean') hidden_output = self.gaussian(distances) predictions = hidden_output.dot(self.weights) return predictions # 示例数据生成 np.random.seed(42) centers = np.array([[0], [1]]) spread = 0.5 X = np.linspace(-1, 2, num=100).reshape(-1, 1) noise = np.random.normal(scale=0.1, size=X.shape) y = np.sin(np.pi * X[:, 0]) + noise # 构造 RBF 网络对象并拟合数据 network = RBFNetwork(centers, spread) network.fit(X, y.ravel()) predictions = network.predict(X) # 输出 MSE 结果 mse = ((predictions - y.ravel()) ** 2).mean() print(f"MSE of the prediction is {mse:.4f}.") ``` 此代码片段实现了自定义的 RBF 网络结构,并验证了它的回归能力[^2]。 --- ### 总结 无论是将 RBF 用作 SVM 的核函数还是独立设计成神经网络架构,都依赖于合理选取中心点分布策略及调节宽度参数等操作。以上两部分内容分别提供了理论依据和技术实践指导。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值