Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我应该应用什么AI/ML技术来生成Java中的推荐游戏列表?_Java_Arrays_Random_Machine Learning_Artificial Intelligence - Fatal编程技术网

我应该应用什么AI/ML技术来生成Java中的推荐游戏列表?

我应该应用什么AI/ML技术来生成Java中的推荐游戏列表?,java,arrays,random,machine-learning,artificial-intelligence,Java,Arrays,Random,Machine Learning,Artificial Intelligence,我正在从事一个人工智能项目,并试图建立一个视频游戏选择器 用户将输入他们想要玩的游戏的类型、模式、等级和平台。然后程序将接受该输入,然后使用一些尚未确定的逻辑在gameList数组中选择符合该标准的游戏。然后,它将从符合条件的gameList数组中随机选择一个游戏,并输出随机选择的游戏作为建议供用户玩 我遇到了一个问题,试图找到使用用户输入来确定哪些游戏符合该标准的最佳方法 我目前的方法没有利用任何特殊的人工学习或机器学习概念来解决这个问题。我对Java相当陌生,我只是想拼凑出如何最好地解决这个

我正在从事一个人工智能项目,并试图建立一个视频游戏选择器

用户将输入他们想要玩的游戏的类型、模式、等级和平台。然后程序将接受该输入,然后使用一些尚未确定的逻辑在gameList数组中选择符合该标准的游戏。然后,它将从符合条件的gameList数组中随机选择一个游戏,并输出随机选择的游戏作为建议供用户玩

我遇到了一个问题,试图找到使用用户输入来确定哪些游戏符合该标准的最佳方法

我目前的方法没有利用任何特殊的人工学习或机器学习概念来解决这个问题。我对Java相当陌生,我只是想拼凑出如何最好地解决这个问题

如果有人对更好的方法有任何想法,那么我现在有一个更好、更简单的方法来做这件事,这将是非常有帮助的

这是我目前从上一个任务中得到的一些代码,所以忽略printPeas和其他与数组无关的东西。很遗憾,代码当前不起作用:

package Games;

import java.util.Scanner;

public class Games
{
    String _gameType;
    String _genreType;
    String _gameMode;
    String _gameRating;
    String _tType;

    public static Scanner input = new Scanner(System.in);

    public Games(String type)
    {
        _gameType = type;
        System.out.println("Suggested type of game is: " + _gameType);
    }
    public Games()
    {
        _gameType = "Sports";
        System.out.println("Suggested type of game is: " + _gameType);
    }
    public void typeInput(String tType)
    {
        _tType = tType;
        System.out.println("Type of Game selected: " + _tType);
    }
    public void genreInput(String gType)
    {
        _genreType = gType;
        System.out.println("Type of Genre selected: " + _genreType);
    }
    public void modeInput(String gMode)
    {
        _gameMode = gMode;
        System.out.println("Type of Game Mode selected: " + _gameMode);
    }
    public void ratingInput(String gRating)
    {
         _gameRating = gRating;
         System.out.println("Type of Rating selected: " + _gameRating);
    }
    public void printPeas()
    {
        String agent = "Agent = Video Game Seletor.";
        String perfmeasure = "P = If it meets the users information being input.";
        String environment = "E = All games within a certain location.";
        String actuators = "A = Library of games to select from, and the display of which game was selected.";
        String sensors = "S = Keyboard input.";
        System.out.println(agent);
        System.out.println(perfmeasure);
        System.out.println(environment);
        System.out.println(actuators);
        System.out.println(sensors);
    }
}


package Games;

import java.util.ArrayList;
import java.util.Random;

public class Game
{
    public static String _genreType;
    public static String _gameMode;
    public static String _gameRating;
    public static String _gameName;

    public void setGame(String genre, String mode, String rating)
    {
        _genreType = genre;
        _gameMode = mode;
        _gameRating = rating;
        _gameName = "";

        Random random = new Random();
        String gameList[] = {"NHL '18", "Madden '18", "Call of Duty: WW2", "GTA V", "Counter-Strike: Global Offsnsive",
            "World of Warcrat", "PUBG", "Assassin's Creed Origins", "Hearthstone", "Battlefield 4"};
        String genreList[] = {"Action", "Sports", "Racing", "MMORPG", "Strategy", "Fighting", "Fantasy"};
        String modeList[] = {"Multiplayer", "Online", "Campaign"};
        String ratingList[] = {"Everyone", "E10+", "Teen", "Mature"};
        String platformList[] = {"PC", "PS4", "Xbox"};
        for(int i=0; i<gameList.length; i++) //trying to have it pull a random game name matching type, genre, mode and rating
        {
            if(genre == genreList[i])
            {
                _genreType = genre;
            }
            if(mode == modeList[i])
            {
                _gameMode = mode;
            }
                System.out.println(gameList[random.nextInt(gameList.length)]);
        }
    }
}

package Games;

import java.util.Scanner;

public class StartSelector
{
    public static String _gameType;
    public static String _genreType;
    public static String _gameMode;
    public static String _gameRating;
    public static Scanner userInput = new Scanner(System.in);
    public static void main(String[] args)
    {
        String gameType = _gameType, genreType = _genreType, gameMode = _gameMode, gameRating = _gameRating;
        Games gameType1 = new Games();
        gameType1.printPeas();
        Games gameType2 = new Games("Action");
        gameType2.printPeas();
        Games gameSelect = new Games();
        System.out.println("Please enter the Genre Type: ");
        genreType = userInput.next();
        gameSelect.genreInput(genreType);
        System.out.println("Please enter the Game Type: ");
        gameType = userInput.next();
        gameSelect.typeInput(gameType);
        System.out.println("Please enter the Game Mode: ");
        gameMode = userInput.next();
        gameSelect.modeInput(gameMode);
        System.out.println("Please enter the Game Rating: ");
        gameRating = userInput.next();
        gameSelect.ratingInput(gameRating);
        userInput.close();
        System.out.println("You have selected a " + genreType + " " 
        + gameType + " " + gameMode + " " + gameRating 
        + " game to play.");
        gameType1.setGame("Action", "Online", "Mature", "GTA V");
    }
}

你所描述的听起来像是一个经典的机器学习分类器问题。鉴于你在为一门人工智能课程做这件事,编写一个分类器可能正是你的教授想要你做的

以一种非常抽象的方式,你能做的是:

为您拥有的gameList[]中的每个游戏的GeneType、gamemode、gamerating、ttype分配数值和权重

为每个游戏计算4d空间中的向量

计算用户输入的向量

找到用户的最近邻游戏向量输入的游戏向量,将此最近邻游戏向量作为建议游戏输出给用户

例如,PUBG向量是:

动作赋值为1 多人游戏赋值为1 指定的值为3 平台列表赋值为1+2+3 你的PUBG向量是。 如果用户输入他们想要一款青少年多人游戏,并且在所有三个平台上都可以玩,那么会给你的分类器输入1,1,3,6。然后,您计算的向量与您已经计算过的PUBG的向量相同。建议的游戏是PUBG

这是你正在做的一个非常好的项目。我上面给出的示例值只是一个示例,您肯定希望对其进行调整。但本文的目的是说明机器学习/AI分类器如何在高水平上工作

这类东西是机器学习/人工智能的基础,已经在工业中广泛使用。例如,信用卡公司将使用分类器检测欺诈行为

您可能不需要经历在训练数据上训练分类器,然后在测试数据上测试分类器的艰苦过程。。。那完全是另一回事。但是您可以使用分类器方法——也就是说,使用输入向量来计算输出标签,以实现您的目标


祝你好运

因此,忽略printPeas和其他不反映问题的东西,您的工作是将代码简化为仅再现问题所需的内容。代码当前不起作用,您需要准确解释它是如何不起作用的。错误例外输出错误?最后,你应该问一个具体的问题,而不是一般的问题。我该怎么办?你的问题是什么?你在哪里需要帮助?本网站的可能副本接受含糊不清的问题,询问关于更好方法的想法等。你可以试着问,但即使在那里,你也需要更准确地回答你的问题,这是有意义的回答,而不是像讨论一样。所以我一直在这个项目上工作,让游戏信息从一个文本文件中读取,并存储在一个数组名称、类型、平台中,还有一个文本文件是用userInput类型、input读取的。我试图将userInput中的类型和平台与gameInfo中的游戏进行比较,并返回与userInput文本文件中的类型和平台匹配的所有值。我知道使用.equals是一种方法,但是我如何使它只返回两个数组中匹配的值,这样我就可以为用户随机选择一个作为最终输出?有多种方法可以做到这一点。想到的一种方法是双通滤波器。过滤器的一般概念是,它将数组和布尔lambda函数作为输入,并输出一个结果数组,其中包含传入数组中满足布尔lambda函数的所有数组元素。在您的情况下,第一个过滤器的lambda为x->x.equalsgametype;。第二个过滤器将是一个带有.equalsplatform的lambda,由第一个过滤器调用数组spit out。