java实现k-means算法(用的鸢尾花iris的数据集,从mysq数据库中读取数据)

k-means算法又称k-均值算法,是机器学习聚类算法中的一种,是一种基于形心的划分方法,其中每个簇的中心都用簇中所有对象的均值来表示。其思想如下:

输入:

  • k:簇的数目;
  • D:包含n个对象的数据集。
输出:k个簇的集合。

方法:

  1. 从D中随机选择几个对象作为起始质心;
  2. 对每个质心,计算每个数据到各个质心的距离,并把这些点分配到离该质心最短的距离的簇;
  3. 对每个簇,计算簇中所有点的均值并将此均值作为新的质心;
  4. 将数据点按照新的中心重新聚类;
  5. 重复【步骤3】,直到质心不再发生变化(新的质心和原来的质心相等);
  6. 输出聚类结果。
算法实现:

木羊的k-means算法实现包括5各类。其中,DBConnection.java用于连接数据库,SelectData.java用于从数据库里读取数据,Point.java存放点对象模型,ManagePoint.java是对点的操作,Kmeans.java是算法的核心思想及主函数入口。以下分别给出各个类的详细代码:

DBConnection.java

数据集获取,在机器学习数据集获取官方网站UCI中点击打开链接,木羊已经把该数据集从txt文档中插入到数据库,并去除了最后一列(花类别)。读者若不熟悉数据库的读写,请百度。若木羊有时间,会在后面的博文中补充把txt文档内容读到数据库中的内容。

<span style="font-size:18px;">package db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/**
 * 
 * 数据库连接类
 * 
 */
public class DBConnection {
	public static final String driver = "com.mysql.jdbc.Driver"
  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
要在 Python MySQL 数据库插入数据,可以使用 `mysql-connector-python` 或 `pymysql` 这两个常用的第三方库。下面是使用 `mysql-connector-python` 的示例代码: 首先,确保已经安装了 `mysql-connector-python`,可以使用以下命令进行安装: ``` pip install mysql-connector-python ``` 然后,使用以下代码连接到 MySQL 数据库,并执行插入数据的操作: ```python import mysql.connector # 建立数据库连接 cnx = mysql.connector.connect(user='your_username', password='your_password', host='your_host', database='your_database') # 创建一个游标对象 cursor = cnx.cursor() # 定义插入数据的 SQL 语句 insert_stmt = "INSERT INTO your_table (column1, column2, ...) VALUES (%s, %s, ...)" # 定义要插入的数据 data = ('value1', 'value2', ...) # 执行插入操作 cursor.execute(insert_stmt, data) # 提交事务 cnx.commit() # 关闭游标和数据库连接 cursor.close() cnx.close() ``` 在上述代码,你需要将 `'your_username'`、`'your_password'`、`'your_host'`、`'your_database'` 替换为实际的数据库连接信息,将 `'your_table'` 替换为要插入数据的表名,将 `'column1'`、`'column2'` 替换为要插入数据的列名,将 `'value1'`、`'value2'` 替换为要插入的具体。 注意,在执行插入操作后,需要调用 `commit()` 方法提交事务,否则数据将不会被真正写入数据库。 以上是使用 `mysql-connector-python` 的示例,如果选择使用 `pymysql` 库,使用方法类似,只需更改导入语句和连接方法即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值