上海市高等学校信息技术水平考试——二三级人工智能技术及应用

一、部分神经网络

实现如下神经网络: 输入层包含两个神经元i1,i2和bias项b1;第二层隐含层包含h1,h2两个神经元和bias项b2;第三层是输出层包含o1,o2。每条线上标的w是层与层之间连接的权重,激活函数为sigmoid函数,假设两个输入是0.5和0.1。
在这里插入图片描述

import numpy as np

#激活函数sigmoid
def sigmoid(x):
    return 1 / (1 + np.exp(-x))

if __name__ == '__main__':
    wi = [[0.25, 0.20], [0.30, 0.15]]         # Weight of input layer
    wo = [[0.40, 0.45] , [0.50, 0.55]]        # Weight of output layer
    b1 = 0.30
    b2 = 0.65
    x = [0.5, 0.1]
    # 前向传播
    z1 = np. dot (wi, x) + b1     # 矩阵相乘
    a1 = sigmoid (z1)
    z2 = np. dot(wo, x) + b2
    a2 = sigmoid (z2)
    print( "result:" + str(a2[0]) + ", result:" +str(a2[1]))

结果:

result:0.7099209183344533, result:0.7221196058493572

二、输入两个集合setA和setB,分别输出它们的交集、并集、差集

Python set() 函数
python求两个列表的并集.交集.差集
python 集合比较(交集、并集,差集)
python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算.

x & y # 交集  
x | y # 并集  
x - y # 差集  (项在x中,但不在y中)
x ^ y # 对称差集(项在x或y中,但不会同时出现在二者中)

例子:

A = [1,2,3,4]
B = [3,4,5,6]
print('交集:', set(A) & set(B))
print('并集:', set(A) | set(B))
print('差集:', set(A) - set(B))
交集: {3, 4}
并集: {1, 2, 3, 4, 5, 6}
差集: {1, 2}

三、广度优先搜索算法

数据结构之广度优先算法的Python简单实现
在某社交网络中存在一位意见领袖,需要使用广度优先搜索算法找出这位意见领袖。社交网络通过散列表的形式保存,如用户"赵"关注了"钱"、“孙"和"李”,而"钱"关注了"周"和"吴",则保存为:
graph[“赵”] = [“钱”, “孙”, “李”]
graph[“钱”] = [“周”, “吴”]
程序使用一个预定义的函数person_is_leader§来判断用户是否为意见领袖。假设从用户"赵"开始搜索,需要确认他的关系网中是否有意见领袖。改正下列代码,使其能够得到正确的结果。

from collections import deque

graph = {}
graph["赵"] = ["钱", "孙", "李"]
graph["钱"] = ["周", "吴"]

# 假设我们这样判断,如果这个人的姓名是以m结尾,那么它就是芒果销售商
def person_is_leader(name):
    return name[-1] == ""

def main():
    # deque()函数用于创建一个双向队列
    search_quene = deque()
    # 假设从用户"赵"开始搜索
    search_quene += graph["赵"]
    while search_quene:
        person = search_quene.popleft()
        if person_is_leader(person):
            print (person + " is the leader.")
            return True
        else:
           search_quene += person   #将person的关注者加入队列search_quene
    return False

if __name__ == '__main__':
    main()

四、贪婪算法

某辆车加满油后最多可以行驶600公里,同时高速公路上有若干加油站,相邻站点之间的距离均小于600公里,加油站之间的距离信息保存在一个列表Distances里。现在需要通过贪婪算法求出此车辆跑满全程所需要加油的最少次数。

Distances = [200,300,400,100,200,500]
num = i = s = 0
while i < len(Distances):
    s += Distances[i]
    if s >= 600:
        s = Distances[i]
        num += 1
    i += 1
print(num)
3

五、Logistic回归预测

现有学习驾驶技术投入的练习时间(月)与通过考试成绩(是否通过)的历史数据,现使用Logistic回归预测训练时间为两个半月的考试成绩。

import numpy as np

x = np.array(
    [0.50, 0.75, 1.00, 1.25, 1.50, 1.75, 1.75, 2.00, 2.25, 2.50, 2.75, 3.00, 3.25, 3.50, 4.00, 4.25, 4.50, 4.75, 5.00,
     5.50])  # 训练时间(月)
y = np.array([0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1])  # 通过考试为1,不通过考试为0

from sklearn.linear_model import LogisticRegression

m = LogisticRegression()    #逻辑回归模型定义
x = x.reshape(-1, 1)    #如果只有一个特征,重塑为一列数组
y = y.reshape(-1,1)
m.fit(x,y)    #模型学习
p=m.predict([[2.5]])  #预测
print(p)
print(m.score(x,y))    #评估模型准确率

结果:

DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().
  y = column_or_1d(y, warn=True)
[0]
0.8

六、基本遗传算法

用Python编程语言实现的基本遗传算法的程序如下:

# selection.py
from __future__ import division
import numpy as np
def selection(population,value):
    #轮盘赌选择
    fitness_sum=[ ]
    for i in range(len(value)):
        if i ==0:
            fitness_sum.append(value[i])
        else:
            fitness_sum.append(fitness_sum[i-1]+value[i])
    for i in range(len(fitness_sum)):
        fitness_sum[i] += sum(value)
        # 选择新种群
        population_new = []
        for i in range(len(value)):
            rand = np.random.uniform(0, 1)
            for j in range(len(value)):
                if j == 0:
                    if 0 < rand and rand <= fitness_sum[j]:
                        population_new.append(population[j])
                    else:
                        if fitness_sum[j-1] < rand and rand <= fitness_sum[j]:
                            population_new.append(population[j])
            return population_new

七、K-Means算法

现给定iris.data鸢尾花测量数据集,包括花瓣的长度和宽度、花萼的长度和宽度4类特征。鸢尾花有三个品种:setosa,versicolor,virginnica。使用K-Means算法对数据集样本进行品种聚类。

import pandas as pd
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

filename = 'iris.data'
data = pd.read_csv(filename, header=None)
# 生成k-means模型
X = data.iloc[:,0:4].values.astype(float)      #提取数据集中的四个特征数据
kmeans = KMeans(n_clusters=3)           #模型定义
kmeans.fit(X)                           #模型学习
print('kmeans.labels_:\n', kmeans.labels_)     #输出聚类结果
pd.plotting.scatter_matrix(data, c=kmeans.labels_)  #生成散点矩阵图观察聚类效果
plt.show( )

操作题

(一) 编程题

1、某电影公司有大量的未分类的影片,希望开发一套电影自动分类系统,根据每部电影中不同镜头类型出现的数量,来自动判断电影的类别。简单起见,假设电影类型为两类:“恐怖片"和"动作片”,每部电影的特征包括:“打斗镜头数量"和"夜场镜头数量”。为了验证模型有效性,需要基于下列样本数据(序号1-6),使用K近邻(KNN)算法构建一个分类模型,并预测样本(电影序号7)是什么类型。
在这里插入图片描述

import numpy as np
from sklearn import neighbors

#建立电影镜头和电影类型的训练数据集
x = np.array([[2,23],[5,28],[1,26],[89,10],[76,5],[71,2]])    #输入特征
y = np.array([1,1,1,2,2,2])    #标签。1表示恐怖片,2表示动作片
#建立KNN分类器模型
knn = neighbors.KNeighborsClassifier(n_neighbors=5)
#模型学习
knn.fit(x,y)
#使用KNN模型对测试样本进行预测
p = knn.predict([[70,6]])
print(p)
[2]

2、某品牌电视厂家为了提高其电视销量,在电视购物、微信公众、网络直播三个渠道进行推广,其中1-5月的广告费用及销量的数据如下表所示。假设6月份在三个渠道的广告费用预算分别为130.1万元、87.8万元、69.2万元,使用线性回归模型预测6月份的销量情况。
在这里插入图片描述
机器学习算法之线性回归算法(Linear Regression)

import numpy as np
#基于sklearn.linear_model库建立线性回归模型
from sklearn.linear_model import LinearRegression             #导入线性回归模型

# 建立广告费用及销量的训练数据集(1-5月数据)
x = np.array([[229.5, 32.6, 69.1], [44.5, 38.8, 44.9],
              [17.8, 46.2, 68.2], [162.1, 40.9, 57.4], [187.9, 10.7, 57.7]])  # 输入特征:广告费用
y = np.array([221000, 140000, 93000, 185000, 129000])  # 输出目标:销量
print(x, y)

# 建立测试数据(6月数据)
new_X = np.array([[130.1, 87.8, 69.2]])  # 输入特征:广告费用
print("6月广告投入:", new_X)

linear = LinearRegression()
linear.fit(x, y.reshape(-1,1))
pre_Y = linear.predict(new_X)
print("6月预期销售:",pre_Y)
[[229.5  32.6  69.1]
 [ 44.5  38.8  44.9]
 [ 17.8  46.2  68.2]
 [162.1  40.9  57.4]
 [187.9  10.7  57.7]] [221000 140000  93000 185000 129000]
6月广告投入: [[130.1  87.8  69.2]]
6月预期销售: [[291513.79628093]]

(二) 方案设计题

1、设计要求:现有一组学生数据,分别属于5个不同的班级。同学之间关系的友好程度可以通过微信聊天次数来衡量,同班同学的聊天次数多于不同班之间的聊天次数。当前已知10名同学分别来自5个班,请选择适当的机器学习算法,设计方案分析剩余学生们的分班情况。(在C:\KS\Answer.docx文件中撰写答案并保存)

2、设计要求:现有一组多个景区的照片,每张照片均标注了拍摄时间、地点以及观测到的PM2.5浓度。请使用深度学习的方法,选用适当的神经网络,设计一种基于照片预测PM2.5浓度的方案。(在C:\KS\Answer.docx文件中撰写答案并保存)

(三) 论述题

1、使用深度学习技术处理图像,通常使用卷积神经网络而不使用全连接网络,原因是什么?(在C:\KS\Answer.docx文件中撰写答案并保存)

2、深度学习中参数初始化方法有哪些,适用范围是什么?(在C:\KS\Answer.docx文件中撰写答案并保存)

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
2020年上海市高等学校信息技术水平考试试卷三级信息系统与数据库技术A场主要考查学生在信息系统与数据库技术方面的基础知识和应用能力。此次考试难度适中,试卷结构合理,题型多样。 试卷由选择题、填空题和应用题三部分组成。选择题主要考查学生对基础概念和理论的理解,要求学生掌握数据库管理系统的组成和功能,熟悉SQL语句的基本使用方法;填空题主要考查学生对数据库设计和优化的理解,要求学生熟悉关系数据库的概念和表的结构设计;应用题主要考查学生对信息系统开发过程和方法的掌握,要求学生能够利用数据库管理系统进行数据查询和报表生成。 本次考试内容涵盖了数据库管理系统的各个方面,对学生的理论基础和实践能力都有较高要求。考试题目涉及了数据库的基本概念、建模过程、查询语言的使用、事务管理等方面,要求学生熟悉并能够熟练运用。 总体而言,本次考试相对来说比较全面,既考察了学生的基础知识,又注重了实际应用能力的考查。对于备考的学生来说,需要多做题,并结合实际应用进行练习。同时,要加强对数据库管理系统的理论学习,掌握数据库的基本概念和操作方法,并能够熟练地使用SQL语句进行数据查询和管理。此外,还需要重点关注数据库设计和优化的相关知识。 希望考生能够认真复习,合理安排备考时间,全面掌握相关知识,顺利通过考试。加油!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值