优化网站排名软件织梦网站wap
web/
2025/9/27 0:43:18/
文章来源:
优化网站排名软件,织梦网站wap,php网站开发周期多长,在QQ上做cpa网站说是恶意的文章目录 Rosenblatt感知器基础收敛算法算法概述算法步骤关键点说明总结 C实现要点代码 参考文献 Rosenblatt感知器
基础
感知器#xff0c;也可翻译为感知机#xff0c;是一种人工神经网络。它可以被视为一种最简单形式的前馈式人工神经网络#xff0c;是一种二元线性分类… 文章目录 Rosenblatt感知器基础收敛算法算法概述算法步骤关键点说明总结 C实现要点代码 参考文献 Rosenblatt感知器
基础
感知器也可翻译为感知机是一种人工神经网络。它可以被视为一种最简单形式的前馈式人工神经网络是一种二元线性分类器。Rosenblatt感知器建立在一个非线性神经元上但是它只能完成线性分类硬限幅与超平面 局部诱导域 v ∑ i 1 m w i x i b 从上面公式看来只能完成线性分类 完成线性分类靠最后的输出就是硬限幅的功能了 输入为正数输出 1 否则输出 − 1 。 如果 v 0 输出 1 否则输出 − 1 。 v 0 就是一个超平面线性分隔两类也叫两个决策区域 局部诱导域 \\v\sum_{i1}^mw_ix_ib \\从上面公式看来只能完成线性分类 \\完成线性分类靠最后的输出就是硬限幅的功能了 \\输入为正数输出1否则输出-1。 \\如果 v0 输出 1否则输出-1。 \\v0就是一个超平面线性分隔两类也叫两个决策区域 局部诱导域vi1∑mwixib从上面公式看来只能完成线性分类完成线性分类靠最后的输出就是硬限幅的功能了输入为正数输出1否则输出−1。如果v0输出1否则输出−1。v0就是一个超平面线性分隔两类也叫两个决策区域 为什么Rosenblatt感知器是非线性神经元因为硬限幅的存在。
收敛算法
下面内容来自文心一言的自动生成内容 Rosenblatt的收敛算法也被称为感知器收敛算法或Rosenblatt误差修正训练规则是一种用于训练单层感知机的算法。该算法由Frank Rosenblatt在1957年提出主要用于解决二分类问题。以下是对该算法的详细解释 算法概述 Rosenblatt的收敛算法是一个迭代过程通过不断调整感知机的权重和偏置阈值使得感知机能够正确分类给定的输入数据。 算法步骤 初始化 权重向量w(0)初始化为0或随机值。偏置b在算法中通常包含在权重向量中作为w(0)的一个分量也初始化为0或随机值。 迭代过程 对于每一个输入样本x(n)其中n代表时间步或样本序号和对应的期望输出d(n) 计算输出y(n) sgn(w(n) * x(n))其中sgn是符号函数当w(n) * x(n)大于0时返回1小于0时返回-1等于0时可以根据需要定义。计算误差e(n) d(n) - y(n)。更新权重和偏置w(n1) w(n) q * e(n) * x(n)其中q是学习率参数通常是一个小于1的正数。 重复上述过程直到满足停止条件。 停止条件 可以是达到预设的最大迭代次数。也可以是网络的输出与期望输出的误差小于某个预设的阈值。 关键点说明 学习率q学习率决定了权重更新的步长。较大的学习率可能导致算法收敛速度加快但也可能导致算法不稳定较小的学习率则可能使算法收敛速度变慢但更加稳定。权重和偏置权重和偏置是感知机的可调整参数通过调整这些参数感知机可以学习如何正确分类输入数据。符号函数sgn符号函数用于将加权输入转换为二元输出。在实际应用中可以根据需要选择其他激活函数来替代符号函数。 总结 Rosenblatt的收敛算法是一种简单而有效的神经网络学习算法它通过不断调整感知机的权重和偏置来使得网络能够逐渐逼近最优解实现正确的分类。需要注意的是该算法仅适用于线性可分的问题。对于非线性可分的问题需要使用更复杂的神经网络算法来解决。 可在文心一言中输入更多相关内容查询。
C实现
要点
把偏置b作为权值的第一个元素 w ( 0 ) w(0) w(0)对应权值的输入x设置为1样本文件可在iris网站下载。但注意只留两种花的样本因为这是二分类只能线性分为两类。
代码
#include iostream
#include fstream
#include vector
#include string
#include sstream
#include algorithm
#include regex
#include e:/eigen/Eigen/Denseusing namespace std;
using namespace Eigen;struct IrisDa{float *irisX;int dataSize;int d;~IrisDa(){delete[] irisX;}
};
struct IrisDaW{float *irisW;int dataSize;~IrisDaW(){delete[] irisW;}
};
IrisDaW *irisDaWnullptr;//权值参数vectorstring split(const string text, char separator);
string removeSpaces(const string input);
void dataLearn(const IrisDa *irisDa);
int sgn(float x);
void showIrisW();
void dataTest();
void rbTest(const IrisDa *irisDa);int main(){ifstream fileIn;char helloStr[100];//read csvfileIn.open(e:/ml_data/iris/iris_sample.data);if (!fileIn.is_open()){cout打开失败endl;return 1;}regex strRx(R((\d)(\.)(\d)));smatch match;while (fileInhelloStr){//construct x(n) and d(n)IrisDa *irisDanew IrisDa;vectorstring sampleDatassplit(helloStr,,);int dataCountsampleDatas.size();float *irisX new float[dataCount];//x(n)irisX[0]1.0;int irisD;//d(n)int i1;for (const string data: sampleDatas) {string irisDataremoveSpaces(data);bool found regex_match(irisData, match, strRx);if (found) {irisX[i]stof(irisData);i;}else{if (irisDataIris-setosa){irisD1;}else{irisD-1;}}}irisDa-irisXirisX;irisDa-dirisD;irisDa-dataSizedataCount;dataLearn(irisDa);showIrisW();}fileIn.close();dataTest();
}void rbTest(const IrisDa *irisDa){if (!irisDaW){cout请检查参数w是否生成endl;return ;}cout正在处理测试数据...endl;for (int i0;iirisDa-dataSize;i) {coutirisDa-irisX[i] ;}coutendl;VectorXf irisW(irisDa-dataSize);VectorXf irisX(irisDa-dataSize);for (int i0;iirisDa-dataSize;i){irisX[i]irisDa-irisX[i];irisW[i]irisDaW-irisW[i];}float ysgn(irisW.transpose()*irisX);cout正确分类irisDa-d预测分类yendl;
}void dataLearn(const IrisDa *irisDa){//训练样本float a0.25;cout正在处理数据...endl;for (int i0;iirisDa-dataSize;i) {coutirisDa-irisX[i] ;}coutirisDa-dendl;if (!irisDaW) {irisDaWnew IrisDaW;irisDaW-irisWnew float[irisDa-dataSize]{0.0};irisDaW-dataSizeirisDa-dataSize;}VectorXf irisW(irisDa-dataSize);VectorXf irisX(irisDa-dataSize);for (int i0;iirisDa-dataSize;i){irisX[i]irisDa-irisX[i];irisW[i]irisDaW-irisW[i];}float ysgn(irisW.transpose()*irisX);irisWirisWa*(irisDa-d-y)*irisX;for (int i0;iirisDa-dataSize;i){irisDaW-irisW[i]irisW[i];}
}void showIrisW(){cout权值endl;for (int i0;iirisDaW-dataSize;i){coutirisDaW-irisW[i] ;}coutendl;
}void dataTest(){//样本测试ifstream fileIn;char helloStr[100];//read csvfileIn.open(e:/ml_data/iris/iris_test.data);if (!fileIn.is_open()){cout打开失败endl;return ;}regex strRx(R((\d)(\.)(\d)));smatch match;while (fileInhelloStr){//construct x(n) and d(n)IrisDa *irisDanew IrisDa;vectorstring sampleDatassplit(helloStr,,);int dataCountsampleDatas.size();float *irisX new float[dataCount];//x(n)irisX[0]1.0;int irisD;//d(n)int i1;for (const string data: sampleDatas) {string irisDataremoveSpaces(data);bool found regex_match(irisData, match, strRx);if (found) {irisX[i]stof(irisData);i;}else{if (irisDataIris-setosa){irisD1;}else{irisD-1;}}}irisDa-irisXirisX;irisDa-dirisD;irisDa-dataSizedataCount;rbTest(irisDa);}fileIn.close();
}int sgn(float x){if (x0) {return 1;}else {return -1;}
}vectorstring split(const string text, char separator) {vectorstring tokens;stringstream ss(text);string item;while (getline(ss, item, separator)) {if (!item.empty()) {tokens.push_back(item);}}return tokens;
}string removeSpaces(const string input) {string result input;result.erase(std::remove(result.begin(), result.end(), ), result.end());return result;
}
运行效果如下
正在处理数据...
1 5.1 3.5 1.4 0.2 1
权值
0 0 0 0 0
正在处理数据...
1 4.9 3 1.4 0.2 1
权值
0 0 0 0 0
正在处理数据...
1 4.7 3.2 1.3 0.2 1
权值
0 0 0 0 0
正在处理数据...
1 4.6 3.1 1.5 0.2 1
权值
0 0 0 0 0
正在处理数据...
1 5.6 2.5 3.9 1.1 -1
权值
-0.5 -2.8 -1.25 -1.95 -0.55
正在处理数据...
1 6.7 3 5 1.7 -1
权值
-0.5 -2.8 -1.25 -1.95 -0.55
正在处理数据...
1 6.4 2.9 4.3 1.3 -1
权值
-0.5 -2.8 -1.25 -1.95 -0.55
正在处理数据...
1 6.6 3 4.4 1.4 -1
权值
-0.5 -2.8 -1.25 -1.95 -0.55
正在处理数据...
1 6.8 2.8 4.8 1.4 -1
权值
-0.5 -2.8 -1.25 -1.95 -0.55
正在处理数据...
1 5.1 3.3 1.7 0.5 1
权值
0 -0.25 0.4 -1.1 -0.3
正在处理数据...
1 4.8 3.4 1.9 0.2 1
权值
0.5 2.15 2.1 -0.15 -0.2
正在处理数据...
1 5 3 1.6 0.2 1
权值
0.5 2.15 2.1 -0.15 -0.2
正在处理数据...
1 5 3.4 1.6 0.4 1
权值
0.5 2.15 2.1 -0.15 -0.2
正在处理数据...
1 5.2 3.5 1.5 0.2 1
权值
0.5 2.15 2.1 -0.15 -0.2
正在处理数据...
1 5.2 3.4 1.4 0.2 1
权值
0.5 2.15 2.1 -0.15 -0.2
正在处理数据...
1 4.7 3.2 1.6 0.2 1
权值
0.5 2.15 2.1 -0.15 -0.2
正在处理数据...
1 5.1 3.8 1.9 0.4 1
权值
0.5 2.15 2.1 -0.15 -0.2
正在处理数据...
1 4.8 3 1.4 0.3 1
权值
0.5 2.15 2.1 -0.15 -0.2
正在处理数据...
1 5.1 3.8 1.6 0.2 1
权值
0.5 2.15 2.1 -0.15 -0.2
正在处理数据...
1 4.6 3.2 1.4 0.2 1
权值
0.5 2.15 2.1 -0.15 -0.2
正在处理数据...
1 5.3 3.7 1.5 0.2 1
权值
0.5 2.15 2.1 -0.15 -0.2
正在处理数据...
1 5 3.3 1.4 0.2 1
权值
0.5 2.15 2.1 -0.15 -0.2
正在处理数据...
1 7 3.2 4.7 1.4 -1
权值
0 -1.35 0.5 -2.5 -0.9
正在处理数据...
1 6.4 3.2 4.5 1.5 -1
权值
0 -1.35 0.5 -2.5 -0.9
正在处理数据...
1 6.9 3.1 4.9 1.5 -1
权值
0 -1.35 0.5 -2.5 -0.9
正在处理数据...
1 5.5 2.3 4 1.3 -1
权值
0 -1.35 0.5 -2.5 -0.9
正在处理数据...
1 4.8 3 1.4 0.1 1
权值
0.5 1.05 2 -1.8 -0.85
正在处理数据...
1 4.3 3 1.1 0.1 1
权值
0.5 1.05 2 -1.8 -0.85
正在处理数据...
1 5.8 4 1.2 0.2 1
权值
0.5 1.05 2 -1.8 -0.85
正在处理数据...
1 5.7 4.4 1.5 0.4 1
权值
0.5 1.05 2 -1.8 -0.85
正在处理数据...
1 5.7 2.8 4.5 1.3 -1
权值
0 -1.8 0.6 -4.05 -1.5
正在处理数据...
1 6.3 3.3 4.7 1.6 -1
权值
0 -1.8 0.6 -4.05 -1.5
正在处理数据...
1 4.9 2.4 3.3 1 -1
权值
0 -1.8 0.6 -4.05 -1.5
正在处理数据...
1 6.6 2.9 4.6 1.3 -1
权值
0 -1.8 0.6 -4.05 -1.5
正在处理数据...
1 5.2 2.7 3.9 1.4 -1
权值
0 -1.8 0.6 -4.05 -1.5
正在处理数据...
1 5 2 3.5 1 -1
权值
0 -1.8 0.6 -4.05 -1.5
正在处理数据...
1 4.8 3.1 1.6 0.2 1
权值
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5.4 3.4 1.5 0.4 1
权值
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5.2 4.1 1.5 0.1 1
权值
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5.5 4.2 1.4 0.2 1
权值
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5.1 3.4 1.5 0.2 1
权值
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5 3.5 1.3 0.3 1
权值
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 4.5 2.3 1.3 0.3 1
权值
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 4.4 3.2 1.3 0.2 1
权值
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5 3.5 1.6 0.6 1
权值
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5.9 3 4.2 1.5 -1
权值
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 6 2.2 4 1 -1
权值
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 6.1 2.9 4.7 1.4 -1
权值
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5.6 2.9 3.6 1.3 -1
权值
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 6.7 3.1 4.4 1.4 -1
权值
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5.4 3.7 1.5 0.2 1
权值
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 4.8 3.4 1.6 0.2 1
权值
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5.6 3 4.5 1.5 -1
权值
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5.8 2.7 4.1 1 -1
权值
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 6.2 2.2 4.5 1.5 -1
权值
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 4.9 3.1 1.5 0.1 1
权值
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5 3.2 1.2 0.2 1
权值
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5.5 3.5 1.3 0.2 1
权值
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 4.9 3.1 1.5 0.1 1
权值
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 4.4 3 1.3 0.2 1
权值
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5.6 2.7 4.2 1.3 -1
权值
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5.7 3 4.2 1.2 -1
权值
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5.7 2.9 4.2 1.3 -1
权值
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 6.2 2.9 4.3 1.3 -1
权值
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5.1 2.5 3 1.1 -1
权值
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 4.4 2.9 1.4 0.2 1
权值
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 4.9 3.1 1.5 0.1 1
权值
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5.5 2.4 3.8 1.1 -1
权值
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5.5 2.4 3.7 1 -1
权值
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5.8 2.7 3.9 1.2 -1
权值
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 6 2.7 5.1 1.6 -1
权值
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5.4 3 4.5 1.5 -1
权值
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 6 3.4 4.5 1.6 -1
权值
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5.7 2.8 4.1 1.3 -1
权值
0.5 0.6 2.15 -3.25 -1.4
正在处理测试数据...
1 6 2.9 4.5 1.5
正确分类-1预测分类-1
正在处理测试数据...
1 5.7 2.6 3.5 1
正确分类-1预测分类-1
正在处理测试数据...
1 6.5 2.8 4.6 1.5
正确分类-1预测分类-1
正在处理测试数据...
1 5 2.3 3.3 1
正确分类-1预测分类-1
正在处理测试数据...
1 5 3.6 1.4 0.2
正确分类1预测分类1
正在处理测试数据...
1 5.4 3.9 1.7 0.4
正确分类1预测分类1
正在处理测试数据...
1 4.6 3.4 1.4 0.3
正确分类1预测分类1
正在处理测试数据...
1 5 3.4 1.5 0.2
正确分类1预测分类1
正在处理测试数据...
1 6.7 3.1 4.7 1.5
正确分类-1预测分类-1
正在处理测试数据...
1 6.3 2.3 4.4 1.3
正确分类-1预测分类-1
正在处理测试数据...
1 5.6 3 4.1 1.3
正确分类-1预测分类-1
正在处理测试数据...
1 5.5 2.5 4 1.3
正确分类-1预测分类-1
正在处理测试数据...
1 5.5 2.6 4.4 1.2
正确分类-1预测分类-1
正在处理测试数据...
1 6.1 3 4.6 1.4
正确分类-1预测分类-1
正在处理测试数据...
1 5.8 2.6 4 1.2
正确分类-1预测分类-1
正在处理测试数据...
1 5.4 3.9 1.3 0.4
正确分类1预测分类1
正在处理测试数据...
1 5.1 3.5 1.4 0.3
正确分类1预测分类1
正在处理测试数据...
1 5.7 3.8 1.7 0.3
正确分类1预测分类1
正在处理测试数据...
1 5.1 3.8 1.5 0.3
正确分类1预测分类1
正在处理测试数据...
1 5.4 3.4 1.7 0.2
正确分类1预测分类1
正在处理测试数据...
1 5.1 3.7 1.5 0.4
正确分类1预测分类1
正在处理测试数据...
1 4.6 3.6 1 0.2
正确分类1预测分类1
正在处理测试数据...
1 5.9 3.2 4.8 1.8
正确分类-1预测分类-1
正在处理测试数据...
1 6.1 2.8 4 1.3
正确分类-1预测分类-1
正在处理测试数据...
1 6.3 2.5 4.9 1.5
正确分类-1预测分类-1
正在处理测试数据...
1 6.1 2.8 4.7 1.2
正确分类-1预测分类-1Process returned 0 (0x0) execution time : 0.901 s
Press any key to continue.参考文献
1、《神经网络与机器学习 第三版》
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/82459.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!