机器学习实验报告

机器学习实验报告
机器学习实验报告

《机器学习》课内实验报告(1) ID算法实现决策树2015 - 2016学年第 2 学期

专业:智能科学与技术

班级:智能1301班

学号:06133029

姓名:张争辉

一、实验目的:

理解ID3算法的基本原理,并且编程实现。

二、实验要求:

使用C/C++/MATLAB实现ID3算法。

输入:

若干行,每行 5 个字符串,表示

Outlook Temperature Humidity Wind Play ball

如上表。

输出:

决策树。

实验结果如下:

输入:

Sunny Hot High Weak No

Sunny Hot High Strong No

Overcast Hot High Weak Yes

Rain Mild High Weak Yes

Rain Cool Normal Weak Yes

Rain Cool Normal Strong No

Overcast Cool Normal Strong Yes

Sunny Mild High Weak No

Sunny Cool Normal Weak Yes

Rain Mild Normal Weak Yes

Sunny Mild Normal Strong Yes

Overcast Mild High Strong Yes

Overcast Hot Normal Weak Yes

Rain Mild High Strong No

输出:

Outlook

Rain Wind

Strong No Weak Yes Overcast Yes

Sunny Humidity

Normal Yes High No 三、具体实现:

实现算法如下:

#include

#include

#include

#include

using namespace std;

#define ROW 14

#define COL 5

#define log2 0.69314718055

typedef struct TNode

{

char data[15];

char weight[15];

TNode * firstchild,*nextsibling;

}*tree;

typedef struct LNode

{

char OutLook[15];

char Temperature[15];

char Humidity[15];

char Wind[15];

char PlayTennis[5];

LNode *next;

}*link;

typedef struct AttrNode

{

char attributes[15];//属性

int attr_Num;//属性的个数

AttrNode *next;

}*Attributes;

char * Examples[ROW][COL] = {//"OverCast","Cool","High","Strong","No", // "Rain","Hot","Normal","Strong","Yes",

"Sunny","Hot","High","Weak","No",

"Sunny","Hot","High","Strong","No",

"OverCast","Hot","High","Weak","Yes",

"Rain","Mild","High","Weak","Yes",

"Rain","Cool","Normal","Weak","Yes",

"Rain","Cool","Normal","Strong","No",

"OverCast","Cool","Normal","Strong","Yes",

"Sunny","Mild","High","Weak","No",

"Sunny","Cool","Normal","Weak","Yes",

"Rain","Mild","Normal","Weak","Yes",

"Sunny","Mild","Normal","Strong","Yes",

"OverCast","Mild","Normal","Strong","Yes",

"OverCast","Hot","Normal","Weak","Yes",

"Rain","Mild","High","Strong","No"

};

char * Attributes_kind[4] = {"OutLook","Temperature","Humidity","Wind"}; int Attr_kind[4] = {3,3,2,2};

char * OutLook_kind[3] = {"Sunny","OverCast","Rain"};

char * Temperature_kind[3] = {"Hot","Mild","Cool"};

char * Humidity_kind[2] = {"High","Normal"};

char * Wind_kind[2] = {"Weak","Strong"};

/*int i_Exampple[14][5] = {0,0,0,0,1,

0,0,0,1,1,

1,0,0,1,0,

2,1,0,0,0,

2,2,1,0,0,

2,2,1,1,1,

1,2,1,1,0,

0,1,0,0,1,

0,2,1,0,0,

2,1,1,0,0,

0,1,1,1,0,

1,1,1,1,0,

1,1,1,0,0,

2,1,0,0,1

};*/

void treelists(tree T);

void InitAttr(Attributes &attr_link,char * Attributes_kind[],int Attr_kind[]); void InitLink(link &L,char * Examples[][COL]);

void ID3(tree &T,link L,link Target_Attr,Attributes attr);

void PN_Num(link L,int &positve,int &negative);

double Gain(int positive,int negative,char * atrribute,link L,Attributes attr_L); void main()

{

link LL,p;

Attributes attr_L,q;

tree T;

T = new TNode;

T->firstchild = T->nextsibling = NULL;

strcpy(T->weight,"");

strcpy(T->data,"");

attr_L = new AttrNode;

attr_L->next = NULL;

LL = new LNode;

LL->next = NULL;

//成功建立两个链表

InitLink(LL,Examples);

InitAttr(attr_L,Attributes_kind,Attr_kind);

ID3(T,LL,NULL,attr_L);

cout<<"决策树以广义表形式输出如下:"<

// cout<

}

//以广义表的形式输出树

void treelists(tree T)

{

tree p;

if(!T)

return;

cout<<"{"<weight<<"}";

cout<data;

p = T->firstchild;

if (p)

{

cout<<"(";

while (p)

{

treelists(p);

p = p->nextsibling;

if (p)cout<<',';

}

cout<<")";

}

}

void InitAttr(Attributes &attr_link,char * Attributes_kind[],int Attr_kind[]) {

Attributes p;

for (int i =0;i < 4;i++)

{

p = new AttrNode;

p->next = NULL;

strcpy(p->attributes,Attributes_kind[i]);

p->attr_Num = Attr_kind[i];

p->next = attr_link->next;

attr_link->next = p;

}

}

void InitLink(link &LL,char * Examples[][COL])

{

link p;

for (int i = 0;i < ROW;i++)

{

p = new LNode;

p->next = NULL;

strcpy(p->OutLook,Examples[i][0]);

strcpy(p->Temperature,Examples[i][1]);

strcpy(p->Humidity,Examples[i][2]);

strcpy(p->Wind,Examples[i][3]);

strcpy(p->PlayTennis,Examples[i][4]);

p->next = LL->next;

LL->next = p;

}

}

void PN_Num(link L,int &positve,int &negative)

{

positve = 0;

negative = 0;

link p;

p = L->next;

while (p)

{

if (strcmp(p->PlayTennis,"No") == 0)

negative++;

else if(strcmp(p->PlayTennis,"Yes") == 0)

positve++;

p = p->next;

}

}

//计算信息增益

//link L: 样本集合S

//attr_L:属性集合

double Gain(int positive,int negative,char * atrribute,link L,Attributes attr_L) {

int atrr_kinds;//每个属性中的值的个数

Attributes p = attr_L->next;

link q = L->next;

int attr_th = 0;//第几个属性

while (p)

{

if (strcmp(p->attributes,atrribute) == 0)

{

atrr_kinds = p->attr_Num;

break;

}

p = p->next;

attr_th++;

}

double entropy,gain=0;

double p1 = 1.0*positive/(positive + negative);

double p2 = 1.0*negative/(positive + negative);

entropy = -p1*log(p1)/log2 - p2*log(p2)/log2;//集合熵

gain = entropy;

//获取每个属性值在训练样本中出现的个数

//获取每个属性值所对应的正例和反例的个数

//声明一个3*atrr_kinds的数组

int ** kinds= new int * [3];

for (int j =0;j < 3;j++)

{

kinds[j] = new int[atrr_kinds];//保存每个属性值在训练样本中出现的个数}

//初始化

for (int j = 0;j< 3;j++)

{

for (int i =0;i < atrr_kinds;i++)

{

kinds[j][i] = 0;

}

}

while (q)

{

if (strcmp("OutLook",atrribute) == 0)

{

for (int i = 0;i < atrr_kinds;i++)

{

if(strcmp(q->OutLook,OutLook_kind[i]) == 0)

{

kinds[0][i]++;

if(strcmp(q->PlayTennis,"Yes") == 0)

kinds[1][i]++;

else

kinds[2][i]++;

}

}

}

else if (strcmp("Temperature",atrribute) == 0)

{

for (int i = 0;i < atrr_kinds;i++)

{

if(strcmp(q->Temperature,Temperature_kind[i]) == 0)

{

kinds[0][i]++;

if(strcmp(q->PlayTennis,"Yes") == 0)

kinds[1][i]++;

else

kinds[2][i]++;

}

}

}

else if (strcmp("Humidity",atrribute) == 0)

{

for (int i = 0;i < atrr_kinds;i++)

{

if(strcmp(q->Humidity,Humidity_kind[i]) == 0)

{

kinds[0][i]++;

if(strcmp(q->PlayTennis,"Yes") == 0)

kinds[1][i]++;//

else

kinds[2][i]++;

}

}

}

else if (strcmp("Wind",atrribute) == 0)

{

for (int i = 0;i < atrr_kinds;i++)

{

if(strcmp(q->Wind,Wind_kind[i]) == 0)

{

kinds[0][i]++;

if(strcmp(q->PlayTennis,"Yes") == 0)

kinds[1][i]++;

else

kinds[2][i]++;

}

}

}

q = q->next;

}

//计算信息增益

double * gain_kind = new double[atrr_kinds];

int positive_kind = 0,negative_kind = 0;

for (int j = 0;j < atrr_kinds;j++)

{

if (kinds[0][j] != 0 && kinds[1][j] != 0 && kinds[2][j] != 0)

{

p1 = 1.0*kinds[1][j]/kinds[0][j];

p2 = 1.0*kinds[2][j]/kinds[0][j];

gain_kind[j] = -p1*log(p1)/log2-p2*log(p2)/log2;

gain = gain - (1.0*kinds[0][j]/(positive + negative))*gain_kind[j];

}

else

gain_kind[j] = 0;

}

return gain;

}

//在ID3算法中的训练样本子集合与属性子集合的链表需要进行清空void FreeLink(link &Link)

{

link p,q;

p = Link->next;

Link->next = NULL;

while (p)

{

q = p;

p = p->next;

free(q);

}

}

void ID3(tree &T,link L,link Target_Attr,Attributes attr)

{

Attributes p,max,attr_child,p1;

link q,link_child,q1;

tree r,tree_p;

int positive =0,negative =0;

PN_Num(L,positive,negative);

//初始化两个子集合

attr_child = new AttrNode;

attr_child->next = NULL;

link_child = new LNode;

link_child->next = NULL;

if (positive == 0)//全是反例

{

strcpy(T->data,"No");

return;

}

else if( negative == 0)//全是正例

{

strcpy(T->data,"Yes");

return;

}

p = attr->next; //属性链表

double gain,g = 0;

/***************************************************************** *******/

/* 建立属性子集合与训练样本子集合有两个方案:

一:在原来链表的基础上进行删除;

二:另外申请空间进行存储子集合;

采用第二种方法虽然浪费了空间,但也省了很多事情,避免了变量之间的应用混乱

*/

/***************************************************************** *******/

if(p)

{

while (p)

{

gain = Gain(positive,negative,p->attributes,L,attr);

cout<attributes<<" "<

if(gain > g)

{

g = gain;

max = p;//寻找信息增益最大的属性

}

p = p->next;

}

strcpy(T->data,max->attributes);//增加决策树的节点

cout<<"信息增益最大的属性:max->attributes = "<attributes<

//下面开始建立决策树

//创建属性子集合

p = attr->next;

while (p)

{

if (strcmp(p->attributes,max->attributes) != 0)

{

p1 = new AttrNode;

strcpy(p1->attributes,p->attributes);

p1->attr_Num = p->attr_Num;

p1->next = NULL;

p1->next = attr_child->next;

attr_child->next = p1;

}

p = p->next;

}

//需要区分出是哪一种属性

//建立每一层的第一个节点

if (strcmp("OutLook",max->attributes) == 0)

{

r = new TNode;

r->firstchild = r->nextsibling = NULL;

strcpy(r->weight,OutLook_kind[0]);

T->firstchild = r;

//获取与属性值相关的训练样例Example(vi),建立一个新的训练样本链表link_child

q = L->next;

while (q)

{

if (strcmp(q->OutLook,OutLook_kind[0]) == 0)

{

q1 = new LNode;

strcpy(q1->OutLook,q->OutLook);

strcpy(q1->Humidity,q->Humidity);

strcpy(q1->Temperature,q->Temperature);

strcpy(q1->Wind,q->Wind);

strcpy(q1->PlayTennis,q->PlayTennis);

q1->next = NULL;

q1->next = link_child->next;

link_child->next = q1;

}

q = q->next;

}

}

else if (strcmp("Temperature",max->attributes) == 0)

{

r = new TNode;

r->firstchild = r->nextsibling = NULL;

strcpy(r->weight,Temperature_kind[0]);

T->firstchild = r;

//获取与属性值相关的训练样例Example(vi),建立一个新的训练样本链表link_child

q = L->next;

while (q)

{

if (strcmp(q->Temperature,Temperature_kind[0]) == 0)

{

q1 = new LNode;

strcpy(q1->OutLook,q->OutLook);

strcpy(q1->Humidity,q->Humidity);

strcpy(q1->Temperature,q->Temperature);

strcpy(q1->Wind,q->Wind);

strcpy(q1->PlayTennis,q->PlayTennis);

q1->next = NULL;

q1->next = link_child->next;

link_child->next = q1;

}

q = q->next;

}

}

else if (strcmp("Humidity",max->attributes) == 0)

{

r = new TNode;

r->firstchild = r->nextsibling = NULL;

strcpy(r->weight,Humidity_kind[0]);

T->firstchild = r;

//获取与属性值相关的训练样例Example(vi),建立一个新的训练样本链表link_child

q = L->next;

while (q)

{

if (strcmp(q->Humidity,Humidity_kind[0]) == 0)

{

q1 = new LNode;

strcpy(q1->OutLook,q->OutLook);

strcpy(q1->Humidity,q->Humidity);

strcpy(q1->Temperature,q->Temperature);

strcpy(q1->Wind,q->Wind);

strcpy(q1->PlayTennis,q->PlayTennis);

q1->next = NULL;

q1->next = link_child->next;

link_child->next = q1;

}

q = q->next;

}

}

else if (strcmp("Wind",max->attributes) == 0)

{

r = new TNode;

r->firstchild = r->nextsibling = NULL;

strcpy(r->weight,Wind_kind[0]);

T->firstchild = r;

//获取与属性值相关的训练样例Example(vi),建立一个新的训练样本链表link_child

q = L->next;

while (q)

{

if (strcmp(q->Wind,Wind_kind[0]) == 0)

{

q1 = new LNode;

strcpy(q1->OutLook,q->OutLook);

strcpy(q1->Humidity,q->Humidity);

strcpy(q1->Temperature,q->Temperature);

strcpy(q1->Wind,q->Wind);

strcpy(q1->PlayTennis,q->PlayTennis);

q1->next = NULL;

q1->next = link_child->next;

link_child->next = q1;

}

q = q->next;

}

}

int p = 0,n = 0;

PN_Num(link_child,p,n);

if (p != 0 && n != 0)

{

ID3(T->firstchild,link_child,Target_Attr,attr_child);

FreeLink(link_child);

}

else if(p == 0)

{

strcpy(T->firstchild->data,"No");

FreeLink(link_child);

// strcpy(T->firstchild->data,q1->PlayTennis);//----此处应该需要修改----:)

}

else if(n == 0)

{

strcpy(T->firstchild->data,"Yes");

FreeLink(link_child);

}

//建立每一层上的其他节点

tree_p = T->firstchild;

for (int i = 1;i < max->attr_Num;i++)

{

//需要区分出是哪一种属性

if (strcmp("OutLook",max->attributes) == 0)

{

r = new TNode;

r->firstchild = r->nextsibling = NULL;

strcpy(r->weight,OutLook_kind[i]);

tree_p->nextsibling = r;

//获取与属性值相关的训练样例Example(vi),建立一个新的训练样本链表link_child

q = L->next;

while (q)

{

if (strcmp(q->OutLook,OutLook_kind[i]) == 0)

{

q1 = new LNode;

strcpy(q1->OutLook,q->OutLook);

strcpy(q1->Humidity,q->Humidity);

strcpy(q1->Temperature,q->Temperature);

strcpy(q1->Wind,q->Wind);

strcpy(q1->PlayTennis,q->PlayTennis);

q1->next = NULL;

q1->next = link_child->next;

link_child->next = q1;

}

q = q->next;

}

}

else if (strcmp("Temperature",max->attributes) == 0)

{

r = new TNode;

r->firstchild = r->nextsibling = NULL;

strcpy(r->weight,Temperature_kind[i]);

tree_p->nextsibling = r;

//获取与属性值相关的训练样例Example(vi),建立一个新的训练样本链表link_child

q = L->next;

while (q)

{

if (strcmp(q->Temperature,Temperature_kind[i]) == 0)

{

q1 = new LNode;

strcpy(q1->OutLook,q->OutLook);

strcpy(q1->Humidity,q->Humidity);

strcpy(q1->Temperature,q->Temperature);

strcpy(q1->Wind,q->Wind);

strcpy(q1->PlayTennis,q->PlayTennis);

q1->next = NULL;

q1->next = link_child->next;

link_child->next = q1;

}

q = q->next;

}

}

else if (strcmp("Humidity",max->attributes) == 0)

{

r = new TNode;

r->firstchild = r->nextsibling = NULL;

strcpy(r->weight,Humidity_kind[i]);

tree_p->nextsibling = r;

//获取与属性值相关的训练样例Example(vi),建立一个新的训练样本链表link_child

q = L->next;

while (q)

{

if (strcmp(q->Humidity,Humidity_kind[i]) == 0)

{

q1 = new LNode;

strcpy(q1->OutLook,q->OutLook);

strcpy(q1->Humidity,q->Humidity);

strcpy(q1->Temperature,q->Temperature);

strcpy(q1->Wind,q->Wind);

strcpy(q1->PlayTennis,q->PlayTennis);

q1->next = NULL;

q1->next = link_child->next;

link_child->next = q1;

}

q = q->next;

}

}

else if (strcmp("Wind",max->attributes) == 0)

{

r = new TNode;

r->firstchild = r->nextsibling = NULL;

strcpy(r->weight,Wind_kind[i]);

tree_p->nextsibling = r;

//获取与属性值相关的训练样例Example(vi),建立一个新的训练样本链表link_child

q = L->next;

while (q)

{

if (strcmp(q->Wind,Wind_kind[i]) == 0)

{

q1 = new LNode;

strcpy(q1->OutLook,q->OutLook);

strcpy(q1->Humidity,q->Humidity);

strcpy(q1->Temperature,q->Temperature);

strcpy(q1->Wind,q->Wind);

strcpy(q1->PlayTennis,q->PlayTennis);

q1->next = NULL;

q1->next = link_child->next;

link_child->next = q1;

}

q = q->next;

}

}

int p = 0,n = 0;

PN_Num(link_child,p,n);

if (p != 0 && n != 0)

{

ID3(tree_p->nextsibling,link_child,Target_Attr,attr_child);

FreeLink(link_child);

}

else if(p == 0)

{

strcpy(tree_p->nextsibling->data,"No");

FreeLink(link_child);

}

else if(n == 0)

{

strcpy(tree_p->nextsibling->data,"Yes");

FreeLink(link_child);

}

tree_p = tree_p->nextsibling;//建立所有的孩子结点

}//建立决策树结束

}

else

{

q = L->next;

strcpy(T->data,q->PlayTennis);

return;//这个地方要赋以训练样本Example中最普遍的Target_attributes 的值

}

}

运行结果如下:

四、实验心得:

本次id3算法,是比较复杂的,需要比较扎实的编程功底,此次实验我搜集了一下资料,查了很多关于id3算法的讲解对id3算法有了一个更加深入的了解,接下来开始编程,可是一开始就出了问题,对输入的数据建立链表存储,就出现了问题,后面种种问题,最后还是做好了,通过此次实验体会到了编程基础的重要性。

最新西华大学机器人创新设计实验报告(工业机械手模拟仿真)

实验报告 (理工类) 课程名称: 机器人创新实验 课程代码: 6003199 学院(直属系): 机械学院机械设计制造系 年级/专业/班: 2010级机制3班 学生姓名: 学号: 实验总成绩: 任课教师: 李炜 开课学院: 机械工程与自动化学院 实验中心名称: 机械工程基础实验中心

一、设计题目 工业机器人设计及仿真分析 二、成员分工:(5分) 三、设计方案:(整个系统工作原理和设计)(20分) 1、功能分析 工业机器人由操作机(机械本体)、控制器、伺服驱动系统和检测传感装置构成,是一种仿人操作、自动控制、可重复编程、能在三维空间完成各种作业的机电一体化自动化生产设备。特别适合于多品种、变批量的柔性生产。它对稳定、提高产品质量,提高生产效率,改善劳动条件和产品的快速更新换代起着十分重要的作用。机器人技术是综合了计算机、控制论、机构学、信息和传感技术、人工智能、仿生学等多学科而形成的高新技术,是当代研究十分活跃,应用日益广泛的领域。机器人应用情况,是一个国家工业自动化水平的重要标志。机器人并不是在简单意义上代替人工的劳动,而是综合了人的特长和机器特长的一种拟人的电子机械装置,既有人对环境状态的快速反应和分析判断能力,又有机器可长时间持续工作、精确度高、抗恶劣环境的能力,从某种意义上说它也是机器的进化过程产物,它是工业以及非产业界的重要生产和服务性设备,也是先进制造技术领域不可缺少的自动化设备。 本次我们小组所设计的工业机器人主要用来完成以下任务: (1)、完成工业生产上主要焊接任务; (2)、能够在上产中完成油漆、染料等喷涂工作; (3)、完成加工工件的夹持、送料与转位任务; (5)、对复杂的曲线曲面类零件加工;(机械手式数控加工机床,如英国DELCAM公司所提供的风力发电机叶片加工方案,起辅助软体为powermill,本身为DELCAM公司出品)

机器学习实验报告

机器学习实验报告

实验一、ID3算法 1.实验目的:了解并掌握ID3算法。 2.实验内容:编程实现ID3算法。 3.实验结果。 实验程序: function tree=ID3(T,N_V) [m,n]=size(T); C=zeros(1,n); for i=1:n C(i)=max(T(:,i)); end Pe=zeros(1,C(n)); Ee=0; for i=1:C(n) Pe(i)=length(find(T(:,n)==i))/m; if Pe(i)~=0 Ee=Ee-(Pe(i)*log2(Pe(i))); end end P=zeros(n-1,max(C(1:n-1)),C(n)); E=zeros(1,n-1); G=zeros(1,n-1); nj=0; for i=1:n-1 for j=1:C(i) nj=length(find(T(:,i)==j)); for k=1:C(n) counter=0; for ii=1:m if(T(ii,i)==j&&T(ii,n)==k) counter=counter+1; end end P(i,j,k)=counter/nj; if P(i,j,k)~=0 E(i)=E(i)-(nj/m)*P(i,j,k)*log2(P(i,j,k)); end end end G(i)=Ee-E(i); end best=0; BestTag=0; for i=1:n-1 if G(i)>best

best=G(i); BestTag=i; end end tree.rname=N_V(1,BestTag); for ii=1:C(BestTag) temp=0; tree.branch{ii}=[]; tree.bname{ii}=[]; for i=1:m if (T(i,BestTag)==ii) if (temp==0) temp=T(i,n); elseif (temp~=T(i,n)) tree.branch{ii}=ID3(T(T(:,BestTag)==ii,:),N_V); tree.bname{ii}=N_V(ii+1,BestTag); break; end end end if isempty(tree.bname{ii}) tree.branch{ii}=N_V(temp+1,n); tree.bname{ii}=N_V(ii+1,BestTag); end end 对于下表: Day Outlook Temperature Humidity Windy PlayTennis D1 Sunny Hot High Weak No D2 Sunny Hot High Strong No D3 Overcast Hot High Weak Yes D4 Rain Mild High Weak Yes D5 Rain Cool Normal Weak Yes D6 Rain Cool Normal Strong No D7 Overcast Cool Normal Strong Yes D8 Sunny Mild High Weak No D9 Sunny Cool Normal Weak Yes D10 Rain Mild Normal Weak Yes D11 Sunny Mild Normal Strong Yes D12 Overcast Mild High Strong Yes D13 Overcast Hot Normal Weak Yes D14 Rain Mild High Strong No 转化为程序输入: N_V={'outlook''temperature''humidity''windy''class'; 'sunny''hot''high''weak''no'; 'overcast''mild''normal''strong''yes'; 'rain''cool''NAS''NAS''NAS'} T= [1 1 1 1 1; 1 1 1 2 1; 2 1 1 1 2; 3 2 1 1 2; 3 3 2 1 2;

六轴工业机器人实验报告

六轴工业机器人模块 实验报告 姓名:张兆伟 班级:13 班 学号:2015042130 日期:2016年8月25日

六轴工业机器人模块实验报告 一、实验背景 六自由度工业机器人具有高度的灵活性和通用性,用途十分广泛。本实验是在开放的六自由度机器人系统上,采用嵌入式多轴运动控制器作为控制系统平台,实现机器人的运动控制。通过示教程序完成机器人的系统标定。学习采用C++编程设计语言编写机器人的基本控制程序,学习实现六自由度机器人的运动控制的基本方法。了解六自由度机器人在机械制造自动化系统中的应用。 在当今高度竞争的全球市场,工业实体必须快速增长才能满足其市场需求。这意味着,制造企业所承受的压力日益增大,既要应付低成本国家的对手,还要面临发达国家的劲敌,二后者为增强竞争力,往往不惜重金改良制造技术,扩大生产能力。 机器人是开源节流的得利助手,能有效降低单位制造成本。只要给定输入成值,机器人就可确保生产工艺和产品质量的恒定一致,显著提高产量。自动化将人类从枯燥繁重的重复性劳动中解放出来,让人类的聪明才智和应变能力得以释放,从而生产更大的经济回报。 二、实验过程 1、程序点0——开始位置 把机器人移动到完全离开周边物体的位置,输入程序点 0。按下手持操作示教器上的【命令一览】键,这时在右侧弹出指令列表菜单如图: 按手持操作示教器【下移】键,使{移动 1}变蓝后,按【右移】键,打开{移动 1}子列表,MOVJ 变蓝后,按下【选择】键,指令出现在命令编辑区。修改指令参数为需要的参数,设置速度,使用默认位置点 ID 为 1。(P1 必须提前示教好)。按下手持操作示教器上的【插入】键,这时插入绿色灯亮起。然后再按

数据挖掘实验报告资料

大数据理论与技术读书报告 -----K最近邻分类算法 指导老师: 陈莉 学生姓名: 李阳帆 学号: 201531467 专业: 计算机技术 日期 :2016年8月31日

摘要 数据挖掘是机器学习领域内广泛研究的知识领域,是将人工智能技术和数据库技术紧密结合,让计算机帮助人们从庞大的数据中智能地、自动地提取出有价值的知识模式,以满足人们不同应用的需要。K 近邻算法(KNN)是基于统计的分类方法,是大数据理论与分析的分类算法中比较常用的一种方法。该算法具有直观、无需先验统计知识、无师学习等特点,目前已经成为数据挖掘技术的理论和应用研究方法之一。本文主要研究了K 近邻分类算法,首先简要地介绍了数据挖掘中的各种分类算法,详细地阐述了K 近邻算法的基本原理和应用领域,最后在matlab环境里仿真实现,并对实验结果进行分析,提出了改进的方法。 关键词:K 近邻,聚类算法,权重,复杂度,准确度

1.引言 (1) 2.研究目的与意义 (1) 3.算法思想 (2) 4.算法实现 (2) 4.1 参数设置 (2) 4.2数据集 (2) 4.3实验步骤 (3) 4.4实验结果与分析 (3) 5.总结与反思 (4) 附件1 (6)

1.引言 随着数据库技术的飞速发展,人工智能领域的一个分支—— 机器学习的研究自 20 世纪 50 年代开始以来也取得了很大进展。用数据库管理系统来存储数据,用机器学习的方法来分析数据,挖掘大量数据背后的知识,这两者的结合促成了数据库中的知识发现(Knowledge Discovery in Databases,简记 KDD)的产生,也称作数据挖掘(Data Ming,简记 DM)。 数据挖掘是信息技术自然演化的结果。信息技术的发展大致可以描述为如下的过程:初期的是简单的数据收集和数据库的构造;后来发展到对数据的管理,包括:数据存储、检索以及数据库事务处理;再后来发展到对数据的分析和理解, 这时候出现了数据仓库技术和数据挖掘技术。数据挖掘是涉及数据库和人工智能等学科的一门当前相当活跃的研究领域。 数据挖掘是机器学习领域内广泛研究的知识领域,是将人工智能技术和数据库技术紧密结合,让计算机帮助人们从庞大的数据中智能地、自动地抽取出有价值的知识模式,以满足人们不同应用的需要[1]。目前,数据挖掘已经成为一个具有迫切实现需要的很有前途的热点研究课题。 2.研究目的与意义 近邻方法是在一组历史数据记录中寻找一个或者若干个与当前记录最相似的历史纪录的已知特征值来预测当前记录的未知或遗失特征值[14]。近邻方法是数据挖掘分类算法中比较常用的一种方法。K 近邻算法(简称 KNN)是基于统计的分类方法[15]。KNN 分类算法根据待识样本在特征空间中 K 个最近邻样本中的多数样本的类别来进行分类,因此具有直观、无需先验统计知识、无师学习等特点,从而成为非参数分类的一种重要方法。 大多数分类方法是基于向量空间模型的。当前在分类方法中,对任意两个向量: x= ) ,..., , ( 2 1x x x n和) ,..., , (' ' 2 ' 1 'x x x x n 存在 3 种最通用的距离度量:欧氏距离、余弦距 离[16]和内积[17]。有两种常用的分类策略:一种是计算待分类向量到所有训练集中的向量间的距离:如 K 近邻选择K个距离最小的向量然后进行综合,以决定其类别。另一种是用训练集中的向量构成类别向量,仅计算待分类向量到所有类别向量的距离,选择一个距离最小的类别向量决定类别的归属。很明显,距离计算在分类中起关键作用。由于以上 3 种距离度量不涉及向量的特征之间的关系,这使得距离的计算不精确,从而影响分类的效果。

机器学习实验报告完整

基于AutoEncoder原理和L_BFGS 优化算法实现手写数字识别

目录 1 神经网络基本概念 (3) 1.1概述 (3) 1.2 神经网络模型 (4) 2 AutoEncoder原理 (5) 2.1 反向传播算法 (5) 2.2 Softmax回归 (7) 2.3 Stacked AutoEncoder (8) 2.4 微调过程 (9) 2.5 Sparse AutoEncoder (9) 2.6 Denoise AutoEncoder (10) 3 L_BFGS算法 (11) 3.1基本原理 (11) 3.2算法流程 (16) 3.3算法收敛性分析: (18) 4 基于AutoEncoder的手写数字识别 (18) 4.1 MNIST数据库 (18) 4.2 模型训练 (19) 4.3 模型测试 (19) 5 实验结果及分析: (19) 5.1 AutoEncoder (20) 5.2 Sparse AutoEncoder (20) 5.3 Denoise AutoEncoder (21) 5.4 实验结果汇总及分析 (22) 6 参考资料 (24)

AutoEncoder 实现手写数字识别 1神经网络基本概念 1.1概述 神经网络是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。 神经网络由多个神经元构成,下图就是单个神经元的图1所示: 图1 神经元模型 这个神经元是以123,,x x x 以及截距1+为输入值的运算单元,其输出为 3 ,()()()T W b i i i h x f W x f W x b ===+∑,其中函数()f ?被称作“激活函数”。在本次试 验中,我们选用sigmoid 函数作为激活函数()f ? 图2 sigmoid 函数图像

机器人实验报告

智能机器人实验报告1 学院:化学与材料科学学院 学号: 2015100749 姓名:朱巧妤 评阅人:评阅时间:

实验1 电驱动与控制实验 (一)实验目的 熟悉和掌握机器人开发环境使用,超声传感器、碰撞传感器、温度传感器、颜色传感器等常见机器人传感器工作原理与使用方法,熟悉机器人平台使用与搭建;设计一个简单的机器人,并采用多种程序设计方法使它能动起来。 (二)仪器工具及材料 计算机、机器人实验系统、机器人软件开发平台、编程下载器等设备。 (三)内容及程序 实验内容: (1)碰撞传感器原理与应用; (2)颜色传感器原理与应用; (3)测距传感器原理与应用; (4)温度传感器原理与应用; (5)熟悉开发环境使用与操作;设计一个简单轮式移动机器人,并使用图形化编程方式实现对机器人的控制,通过该设计掌握机器人开发平台的结构设计、程序设计等基本方法。 实验步骤: 1)首先确定本次要做的机器人为货架物品颜色辨别的机器人。 2)根据模型将梁、轴、插销、螺丝等零件拼装成一个货架台 3)将货架台安装上可识别颜色的摄像头,并装在控制器上方,将两个摄像头的连接线分 别插入控制器的传感器接口,将显示器连接线插入传感器接口。 4)拼装完成后将控制器连接电脑,在电脑上运用Innobot软件对机器人进行颜色识别动 作的编程,拖动颜色传感器模块,对应选择数码管接口以及两个摄像头的接口,使机器人能将货架台上物品的颜色反应到数码管上。 5)将所编程序进行上传。测试看机器人是否能将颜色反映到显示器上完成所编动作。

(四)结果及分析 使用梁和轴以及螺钉拼装出货架台。 将拼装好的货架台装到传感器上。

六轴工业机器人实验报告

六轴工业机器人模块 实验报告

六轴工业机器人模块实验报告 一、实验背景 六自由度工业机器人具有高度得灵活性与通用性,用途十分广泛。本实验就是在开放得六自由度机器人系统上,采用嵌入式多轴运动控制器作为控制系统平台,实现机器人得运动控制。通过示教程序完成机器人得系统标定。学习采用C++编程设计语言编写机器人得基本控制程序,学习实现六自由度机器人得运动控制得基本方法。了解六自由度机器人在机械制造自动化系统中得应用。 在当今高度竞争得全球市场,工业实体必须快速增长才能满足其市场需求。这意味着,制造企业所承受得压力日益增大,既要应付低成本国家得对手,还要面临发达国家得劲敌,二后者为增强竞争力,往往不惜重金改良制造技术,扩大生产能力。 机器人就是开源节流得得利助手,能有效降低单位制造成本。只要给定输入成值,机器人就可确保生产工艺与产品质量得恒定一致,显著提高产量。自动化将人类从枯燥繁重得重复性劳动中解放出来,让人类得聪明才智与应变能力得以释放,从而生产更大得经济回报。 二、实验过程 1、程序点0——开始位置 把机器人移动到完全离开周边物体得位置,输入程序点 0。按下手持操作示教器上得【命令一览】键,这时在右侧弹出指令列表菜单如图: 按手持操作示教器【下移】键,使{移动 1}变蓝后,按【右移】键,打开{移动1}子列表,MOVJ 变蓝后,按下【选择】键,指令出现在命令编辑区。修改指令参数为需要得参数,设置速度,使用默认位置点 ID 为 1。(P1 必须提前示教好)。按下手持操作示教器上得【插入】键,这时插入绿色灯亮起。然后再按下【确认】键,指令插入程序文件记录列表中。此时列表内容显示为: MOVJ P=1 V=25 BL=0 (工作原点)

机器学习实验报告

决策树算法 一、决策树算法简介: 决策树算法是一种逼近离散函数值的方法。它是一种典型的分类方法,首先对数据进行处理,利用归纳算法生成可读的规则和决策树,然后使用决策对新数据进行分析。本质上决策树是通过一系列规则对数据进行分类的过程。决策树方法的基本思想是:利用训练集数据自动地构造决策树,然后根据这个决策树对任意实例进行判定。其中决策树(Decision Tree)是一种简单但是广泛使用的分类器。通过训练数据构建决策树,可以高效的对未知的数据进行分类。决策数有两大优点:1)决策树模型可以读性好,具有描述性,有助于人工分析;2)效率高,决策树只需要一次构建,反复使用,每一次预测的最大计算次数不超过决策树的深度。 决策树算法构造决策树来发现数据中蕴涵的分类规则.如何构造精度高、规模小的决策树是决策树算法的核心内容。决策树构造可以分两步进行。第一步,决策树的生成:由训练样本集生成决策树的过程。一般情况下,训练样本数据集是根据实际需要有历史的、有一定综合程度的,用于数据分析处理的数据集。第二步,决策树的剪技:决策树的剪枝是对上一阶段生成的决策树进行检验、校正和修下的过程,主要是用新的样本数扼集(称为测试数据集)中的数据校验决策树生成过程中产生的初步规则,将那些影响预衡准确性的分枝剪除、决策树方法最早产生于上世纪60年代,到70年代末。由J Ross Quinlan 提出了ID3算法,此算法的目的在于减少树的深度。但是忽略了叶子数目的研究。C4.5算法在ID3算法的基础上进行了改进,对于预测变量的缺值处理、剪枝技术、派生规则等方面作了较大改进,既适合于分类问题,又适合于回归问题。 本节将就ID3算法展开分析和实现。 ID3算法: ID3算法最早是由罗斯昆(J. Ross Quinlan)于1975年在悉尼大学提出的一种分类预测算法,算法的核心是“信息熵”。ID3算法通过计算每个属性的信息增益,认为信息增益高的是好属性,每次划分选取信息增益最高的属性为划分标准,重复这个过程,直至生成一个能完美分类训练样例的决策树。 在ID3算法中,决策节点属性的选择运用了信息论中的熵概念作为启发式函数。

机器人实验报告

一、机器人的定义 美国机器人协会(RIA)的定义: 机器人是一种用于移动各种材料、零件、工具或专用的装置,通过可编程序动作来执行种种任务的、并具有编程能力的多功能机械手。 日本工业机器人协会(JIRA—Japanese Industrial Robot Association):一种带有存储器件和末端执行器的通用机械,它能够通过自动化的动作替代人类劳动。(An all—purpose machine equipped with a memory device and an end—effector,and capable of rotation and of replacing human labor by automatic performance of movements.) 世界标准化组织(ISO):机器人是一种能够通过编程和自动控制来执行诸如作业或移动等任务的机器。(A robot is a machine which can be programmed to perform some tasks which involve manipulative or locomotive actions under automatic control.) 中国(原机械工业部):工业机器人是一种能自动定位控制、可重复编程、多功能多自由度的操作机,它能搬运材料、零件或夹持工具,用以完成各种作业。 二、机器人定义的本质: 首先,机器人是机器而不是人,它是人类制造的替代人类从事某种作业的工具,它能是人的某些功能的延伸。在某些方面,机器人可具有超越人类的能力,但从本质上说机器人永远不可能全面超越人类。

《工业机器人》实验报告

北京理工大学珠海学院实验报告 实验课程:工业机器人实验名称:实验一:工业机器人认识 教师:时间:班级:姓名:学号: 一、实验目的与任务 了解6自由度工业机器人的机械结构,工作原理,性能指标、控制系统,并初步掌握操作。了解6自由度工业机器人在柔性制造系统中的作用。 二、实验设备 FMS系统(含6-DOF工业机器人) 三、实验内容与步骤 1、描述工业机器人的机械结构、工作原理及性能指标。 2、描述控制系统的组成及各部分的作用。

3、描述机器人的软件平台及记录自己在进行实际操作时的步骤及遇到的问题以及自己的想法。教师批阅:

北京理工大学珠海学院实验报告 实验课程:工业机器人实验名称:实验二:机器人坐标系的建立 教师:时间:班级:姓名:学号: 一、实验目的与任务 了解机器人建立坐标系的意义;了解机器人坐标系的类型;掌握用D-H方法建立机器人坐标系的方法与步骤。 二、实验设备 FMS系统(含6-DOF工业机器人) 三、实验内容与步骤 1、描述机器人建立坐标系的意义以及机器人坐标系的类型。 2、深入研究机器人机械结构,建立6自由度关节型机器人杆件坐标系,绘制机器人杆件坐标系图。

教师批阅:

实验课程:工业机器人实验名称:实验三:机器人示教编程与再现控制 教师:时间:班级:姓名:学号: 一、实验目的与任务 了解机器人示教编程的工作原理,掌握6自由度工业机器人的示教编程与再现控制。 二、实验设备 FMS系统(含6-DOF工业机器人) 三、实验内容与步骤 1、描述机器人示教编程的原理。 2、详细叙述示教编程与再现的操作步骤,记录每一个程序点,并谈谈实验心得体会。教师批阅:

工业机器人实验报告

竭诚为您提供优质文档/双击可除工业机器人实验报告 篇一:《工业机器人》实验报告 北京理工大学珠海学院实验报告 实验课程:工业机器人实验名称:实验一:工业机器人认识 教师:时间:班级:姓名:学号: 一、实验目的与任务 了解6自由度工业机器人的机械结构,工作原理,性能指标、控制系统,并初步掌握操作。了解6自由度工业机器人在柔性制造系统中的作用。二、实验设备 Fms系统(含6-DoF工业机器人)三、实验内容与步骤 1、描述工业机器人的机械结构、工作原理及性能指标。 2、描述控制系统的组成及各部分的作用。 3、描述机器人的软件平台及记录自己在进行实际操作时的步骤及遇到的问题以及自己的想法。 教师批阅: 北京理工大学珠海学院实验报告

实验课程:工业机器人实验名称:实验二:机器人坐标系的建立 教师:时间:班级:姓名:学号: 一、实验目的与任务 了解机器人建立坐标系的意义;了解机器人坐标系的类型;掌握用D-h方法建立机器人坐标系的方法与步骤。二、实验设备 Fms系统(含6-DoF工业机器人) 三、实验内容与步骤 1、描述机器人建立坐标系的意义以及机器人坐标系的类型。 2、深入研究机器人机械结构,建立6自由度关节型机器人杆件坐标系,绘制机器人杆件坐标系图。 教师批阅: 北京理工大学珠海学院实验报告 实验课程:工业机器人实验名称:实验三:机器人示教编程与再现控制 教师:时间:班级:姓名:学号: 一、实验目的与任务 了解机器人示教编程的工作原理,掌握6自由度工业机器人的示教编程与再现控制。二、实验设备 Fms系统(含6-DoF工业机器人)三、实验内容与步骤

1、描述机器人示教编程的原理。 2、详细叙述示教编程与再现的操作步骤,记录每一个程序点,并谈谈实验心得体会。 教师批阅: 篇二:工业机器人实验报告 工业机器人实验报告 姓名: 年级: 学号: 前言 六自由度工业机器人是个较新的课题,虽然其在国外已经具有了较完善的研究,但是在国内对于它的研究依旧停留在较低的水平上。机器人技术几种了机械工程、电子技术、计算机技术、自动化控制理论及人工智能等多学科的最新研究成果,代表机电一体化的最高成就,是当代科学技术发展最活跃的领域之一。在传统的制造领域,工业机器人经过诞生、成长、成熟期后,已成为不可缺少的核心自动化装备,目前世界上有近百万台工业机器人正在各种生产现场工作。在非制造领域,上至太空舱、宇宙飞船、月球探索,下至极限环境作业、医疗手术、日常生活服务,机器人技术的应用以拓展到社会经济发展的诸多领域。 一、六自由度机械手臂系统的介绍

工业机器人实验分析报告-机械-示教-离线编程

工业机器人实验报告-机械-示教-离线编程

————————————————————————————————作者:————————————————————————————————日期:

工业机器人实验报告 ——机器人示教与离线编程实验 班级:机械41 组别:第一组 组员:陈豪 2140101003 尹鑫鑫 2140101023 武文家 2140101020 指导老师:桂亮 西安交通大学 2017年 5 月 3 日

西安交通大学实验报告 第页(共页)课程:工业机器人实验日期:2017年 5月 3 日 专业班号机械41组别第一组交报告日期:年月日 姓名陈豪学号2140101003 报告退发:(订正、重做) 姓名尹鑫鑫学号2140101023 教师审批签字: 姓名武文家学号2140101020 实验一机器人示教实验 一、实验目的 1.了解机器人示教与再现的原理; 2.掌握机器人示教和再现过程的操作方法。 二、实验设备 1.模块化机器人一台; 2.模块化机器人控制柜一台。 三、实验原理 机器人的示教-再现过程是分为四个步骤:示教、记忆、再现、操作。 示教,就是操作者把规定的目标动作(包括每个运动部件,每个运动轴的动作)一步一步 的教给机器人。 记忆,即是机器人将操作者所示教的各个点的动作顺序信息、动作速度信息、位姿信息 等记录在存储器中。 再现,便是将示教信息再次浮现,即根据需要,将存储器所存储的信息读出,向执行机 构发出具体的指令。 操作,指机器人以再现信号作为输入指令,使执行机构重复示教过程规定的各种动作。 示教的方法有很多种,有主从式,编程式,示教盒式等多种。 四、实验步骤 1.接通控制柜电源,按下“启动”按钮; 2.启动计算机,运行机器人软件; 3.点击主界面“模块组合方式”按钮,按照实际情况选择已组合的模块设备,并点 击“确定”按钮; 4.点击主界面“机器人复位”按钮,机器人进行回零运动。观察机器人的运动,所 有模块全部运动完成后,机器人处于零点位置; 5.点击“示教”按钮,出现界面;

两轮机器人实验报告

机电综合实验报告 两轮机器人 姓名:付文晖 班级:车辆工程二班 学号: 20110402216 同组成员:张彬 20110402203 平梦浩 20110402103 2014年12月

目录 一、实验目的.................................................. - 2 - 二、实验设备.................................................. - 2 - 三、实验内容.................................................. - 2 - 四、实验原理.................................................. - 2 - 4.1、实验平台——C51+AVR 控制板........................... - 2 - 4.2、开发平台——Keil μVision2........................... - 4 - 4.3、开发辅助工具——USBASP程序下载器软件................ - 5 - 4.4、机器人定速巡航与日字行走............................. - 6 - 4.5、机器人触须导航....................................... - 7 - 4.6、机器人红外导航....................................... - 8 - 五、实验过程及结果........................................... - 10 - 5.1、定速巡航与日字行走.................................. - 10 - 5.1.1、直线向前行走.................................. - 10 - 5.1.2、向左转1/4圈.................................. - 10 - 5.1.3、向右转1/4圈.................................. - 10 - 5.1.4、向后退........................................ - 11 - 5.1.5、日字行走...................................... - 11 - 5.2、触须导航............................................ - 12 - 5.2.1、实验准备...................................... - 12 - 5.2.2、安装胡须...................................... - 13 - 5.2.3、测试胡须...................................... - 14 - 5.2.4、触须导航程序.................................. - 14 - 5.3、红外导航............................................ - 16 - 5.3.1、搭建IR发射和探测器对......................... - 16 - 5.3.2、为何要使用三极管9013 ......................... - 17 - 5.3.3、测试红外发射探测器............................ - 17 - 5.2.4、红外导航程序.................................. - 18 - 六、实验心得................................................. - 22 -

工业机器人实验报告

工业机器人拆装实验报告 学校:湖南大学 学院:机械与运载工程学院 专业:机自1201 姓名:吴子超201211020121 徐文达201211010122 纪后继201210010108 刘建国201204010110

前言 六自由度工业机器人是个较新的课题,虽然其在国外已经具有了较完善的研究,但是在国内对于它的研究依旧停留在较低的水平上。机器人技术几种了机械工程、电子技术、计算机技术、自动化控制理论及人工智能等多学科的最新研究成果,代表机电一体化的最高成就,是当代科学技术发展最活跃的领域之一。在传统的制造领域,工业机器人经过诞生、成长、成熟期后,已成为不可缺少的核心自动化装备,目前世界上有近百万台工业机器人正在各种生产现场工作。在非制造领域,上至太空舱、宇宙飞船、月球探索,下至极限环境作业、医疗手术、日常生活服务,机器人技术的应用以拓展到社会经济发展的诸多领域。 一、六自由度机械手臂系统的介绍 在本次综合创新型试验中我们用到的是六自由度机械手,其是典型的机电一体化设备,在该试验中我们主要是在对其机械臂进行拆卸,然后认真观察其内部机械结构,而后再进行组装,最后再运行整个机

械臂并检测其运动功能。在实验中我们所用的机械手臂实物图: 六自由度机械手臂是一套具有6个自由度的典型串联式小型关 节型机械手臂, 带有小型手抓式;主要由机械系统和控制系统两大部分组成,其机械系统的各部分采用模块化结构,每个部分分别由一个 伺服电动机来带动,每个电动机在根据控制要求以及程序的要求来运动从而实现运动要求;其机械系统主要包括以下六个组件,如图所示PSC Port0,1,2,3,4,5六个组件也就是底座,臂膀,手腕及夹持手指。每个组件由一个伺服电机驱动关节运动,组件1也就是由PSC Port0

山东大学机器学习实验报告 集成学习

山东大学机器学习实验报告 集成学习 计算机科学与技术学院 XXX QQ:2420430689

目录 实验要求 (2) 实验环境 (2) 实验思想 (2) 数据初始处理 (2) k-means (3) Parzen窗方法 (4) k n-近邻 (4) 集成结果 (5) 感想体会 (5)

实验要求 使用集成学习的思想设计分类器对数据进行分类。 实验环境 操作系统:Windows10专业版 软件:MATLAB2014a 实验思想 集成学习的思想是在对新的实例进行分类的时候,把若干个单个分类器(正确率均大于50%)集成起来,通过对多个分类器的分类结果进行某种组合来决定最终的分类。如果把单个分类器比作一个决策者的话,集成学习的方法就相当于多个决策者共同进行一项决策。 -近邻三个分类方法的分类器来在本实验中,使用k-means, Parzen窗和k n 实现一个简单的集成学习,对数据进行分类。这三个算法在前面的实验中均已用过,此处不再详细介绍。 数据初始处理 绘制出实验数据的图如下所示 选区2000个数据点作为训练样本集,剩余的1000个样本点作为测试样本集。所选取的训练样本点与测试样本点如下所示,从图中可以看出数据选取是比较均匀的。

k-means 使用k-means算法将训练样本集聚成2类,效果如下图所示。两个聚类中心分别为[?3.239011.0582]T和[24.6234?4.2796]T,2000个训练样本点中,共有438个样本点分错,训练误差为21.9% 。 利用测试样本集对该聚类进行测试,效果如下图所示。1000个测试样本点中共有212个点分错,测试误差为21.2% 。

机器人实验报告

机器人实验报告 院系:电气信息工程学院班级:XX级电气X班 姓名:XXX 提交日期:201X年X月X日

前言 作为先进制造业中不可替代的重要装备和手段,工业机器人已经成为衡量一个国家制造水平和科技水平的重要标志。机器人的应用越来越广泛,需求越来越大,其技术研究与发展越来越深入,这将提高社会生产率与产品质量,为社会创造巨大的财富。本文将从工业机器的发展历史,现状及未来趋势进行阐述。机器人技术作为20世纪人类最伟大的发明之一,自20世纪60年代初问世以来,经历了近50年的发展已取得显著成果。走向成熟的工业机器人,各种用途的特种机器人的实用化,昭示着机器人技术灿烂的明天。 一、发展历史 工业机器人诞生于20 世纪60 年代,在20 世纪90 年代得到迅速发展,是最先产业化的机器人技术.它是综合了计算机,控制论,机构学,信息和传感技术,人工智能,仿生学等多学科而形成的高新技术,是当代研究十分活跃,应用日益广泛的领域.它的出现是为了适应制造业规模化生产,解决单调,重复的体力劳动和提高生产质量而代替人工作业.在我国,工业机器人的真正使用到现在已经接近20 多年了,已经基本实现了试验,引进到自主开发的转变,促进了我国制造业,勘探业等行业的发展.随着我国改革开放的逐渐深入,国内的工业机器人产业将面对越来越大的竞争与冲击,因此,掌握国内工业机器人市场的实际情况,把握 我国工业机器人的相关技术与研究进展,显得十分重要。 二、发展现状 在普及第一代工业机器人的基础上,第二代工业机器人已经推广,成为主流安装机型,第三代智能机器人已占有一定比重(占日本1998年安装台数的10%,销售额的36%) (1)机械结构:1) 已关节型为主流,80年代发明的使用于装配作业的平 面关节机器人约占总量的1/3.90年代初开发的适应于窄小空间,快节奏,360度全工作空间范围的垂直关节机器人大量用于焊接和上,下料.2)应3K 和汽车,建筑,桥梁等行业需求, 超大型机器人应运而生.如焊接树10米长,10吨以上大构件的弧焊机器人群,采取蚂蚁啃骨头的协作机构.3)CAD,CAE 等技术已普遍用于设计,仿真和制造中. (2)控制技术:1) 大多数采用32位CPU,控制轴数多达27轴,NC 技术,离线编程技术大量采用.2) 协调控制技术日趋成熟,实现了多手与变位机, 多机器人的协调控制, 正逐步实现多智能体的协调控制. 采用基于PC 的开放 结构的控制系统已成为一股潮3) 流,其成本低,具有标准现场网络功能. (3)驱动技术:1) 80年代发展起来的AC 侍服驱动已成为主流驱动技术用于工业机器人中.DD 驱动技术则广泛地用于装配机器人中.2) 新一代的侍服电机与基于微处 理器的智能侍服控制器相结合已由FANUC 等公司开发并用于工业机器人中, 在远程控制中已采用了分布式智能驱动新技术. (4)应用智能化的传感器:装有视觉传感器的机器人数量呈上升趋势,不少机器人装有两种传感器,有些机器人留了多种传感器接口. (5)通用机器人编程语言:在ABB 公司的20多个小型号产品中,采用了通用模化块语言RAPID.最近美国"机器人工作空间技术公司"开发了Robot Script V.10通用语言,运行于该公司的通用机器人控制器URC 的Win NT/95环境.该语言易学医用,可用于各种开发环境,与大多数WINDOWS 软件产品兼容. (6)网络通用方式:大部分机器人采用了Ether 网络通讯方式,占总量的41.3,其它采用RS-232,RA-422,RS-485等通讯接口. (7)高速,高精度,多功能化:目前,最快的装配机器人最大合成速度为16.5m/s. 位置重复精度为正负0.01mm. 但有一种速度竞达到80m/s; 而另一种并连机构的NC 机器人, 其位置重复精度大1微秒. (8)集成化与系统化:当今工业机器人技术的另一特点是应用从单机,单

机器学习实验报告

《机器学习》课内实验报告(1) ID算法实现决策树2015 - 2016学年第 2 学期 专业:智能科学与技术 班级:智能1301班 学号:06133029 姓名:张争辉

一、实验目的: 理解ID3算法的基本原理,并且编程实现。 二、实验要求: 使用C/C++/MATLAB实现ID3算法。 输入: 若干行,每行 5 个字符串,表示 Outlook Temperature Humidity Wind Play ball 如上表。 输出: 决策树。 实验结果如下: 输入: Sunny Hot High Weak No Sunny Hot High Strong No Overcast Hot High Weak Yes Rain Mild High Weak Yes Rain Cool Normal Weak Yes Rain Cool Normal Strong No Overcast Cool Normal Strong Yes Sunny Mild High Weak No Sunny Cool Normal Weak Yes Rain Mild Normal Weak Yes Sunny Mild Normal Strong Yes Overcast Mild High Strong Yes Overcast Hot Normal Weak Yes Rain Mild High Strong No 输出: Outlook Rain Wind Strong No Weak Yes Overcast Yes Sunny Humidity

Normal Yes High No 三、具体实现: 实现算法如下: #include #include #include #include using namespace std; #define ROW 14 #define COL 5 #define log2 0.69314718055 typedef struct TNode { char data[15]; char weight[15]; TNode * firstchild,*nextsibling; }*tree; typedef struct LNode { char OutLook[15]; char Temperature[15]; char Humidity[15]; char Wind[15]; char PlayTennis[5]; LNode *next; }*link; typedef struct AttrNode { char attributes[15];//属性 int attr_Num;//属性的个数 AttrNode *next; }*Attributes; char * Examples[ROW][COL] = {//"OverCast","Cool","High","Strong","No", // "Rain","Hot","Normal","Strong","Yes", "Sunny","Hot","High","Weak","No", "Sunny","Hot","High","Strong","No", "OverCast","Hot","High","Weak","Yes",

智能机器人实验报告

机器人实验报告 1、 实验目的: 1、 认识“能力风暴”机器人,并会简单编辑程序,使其完成规 定动作。 2、 了解“能力风暴机器人内部构造,认识声音、光敏、碰撞等 传感器。 3、 了解AS多功能拓展卡,并能够简单应用。 2、 实验过程: 各组领取能力风暴机器人,老师对其进行讲解,然后各组对其观察,认识,并编辑一些小程序对其进行简单操 作。 1、认识能力风暴机器人 AS-UII有一个功能很强的“大脑”和一组灵敏的“感觉”器官。它不仅可以随着外部环境敏捷地作出反应,而 且还可以与你进行交流。它有听觉、视觉、和触觉,它还 会象人一样使用动作和声音,来表达与它周围世界互动时 的感觉。 开关:控制AS-UII电源的按钮。 电源指示灯:电源指示灯的颜色是绿色。开机时,这个灯会发光,告诉你机器人已经进入工作状态了!

充电指示灯:当你给机器人充电时,充电指示的红灯发光。 充电口:只要将充电器的直流输出端插在充电口上,再将另一端接到 220V电源上即可。 下载口:使用时只需将串口通信线的一端接下载口,另一端连接在电脑机箱后面的一个九针串口上。 “复位/ASOS”按钮:这是个复合按钮,用于下载操作系统和复位。 复位功能:在机器人运行程序的过程中,按下此按钮,机器人就会中断程序的运行。如果要重新运行程序,须按运行键。 下载操作系统功能:连接好串口通信线,打开机器人电源开关,在VJC1.5流程图编辑界面中选择“工具(T)--更新操作系统”命令,然后按下此按钮,即可下载操作系统。 运行键:机器人开机后,按击“运行”键,就可以运行最近下载的程序。 通信指示灯:通信指示灯位于机器人主板的前方,是一个黄色的小灯。在给机器人下载程序时,这个黄灯闪烁,表明下载正常,程序正在进入机器人的“大脑”。

相关文档
最新文档